1955. Count Number of Special Subsequences

Difficulty:
Related Topics:
Similar Questions:

    Problem

    A sequence is special if it consists of a positive number of 0s, followed by a positive number of 1s, then a positive number of 2s.

    Given an array nums (consisting of only integers 0, 1, and 2), return** the number of different subsequences that are special**. Since the answer may be very large, **return it modulo **10^9 + 7.

    A subsequence of an array is a sequence that can be derived from the array by deleting some or no elements without changing the order of the remaining elements. Two subsequences are different if the set of indices chosen are different.

      Example 1:

    Input: nums = [0,1,2,2]
    Output: 3
    Explanation: The special subsequences are bolded [0,1,2,2], [0,1,2,2], and [0,1,2,2].
    

    Example 2:

    Input: nums = [2,2,0,0]
    Output: 0
    Explanation: There are no special subsequences in [2,2,0,0].
    

    Example 3:

    Input: nums = [0,1,2,0,1,2]
    Output: 7
    Explanation: The special subsequences are bolded:
    - [0,1,2,0,1,2]
    - [0,1,2,0,1,2]
    - [0,1,2,0,1,2]
    - [0,1,2,0,1,2]
    - [0,1,2,0,1,2]
    - [0,1,2,0,1,2]
    - [0,1,2,0,1,2]
    

      Constraints:

    Solution

    class Solution {
        public int countSpecialSubsequences(int[] nums) {
            int mod = 1000000007;
            int[] dp = new int[] {1, 0, 0, 0};
            for (int n : nums) {
                dp[n + 1] = (dp[n] + 2 * dp[n + 1] % mod) % mod;
            }
            return dp[3];
        }
    }
    

    Explain:

    nope.

    Complexity: