Description
Submission
class Solution { typedef long long ll; public: int countSpecialSubsequences(vector<int>& nums) { const int M = 1e9 + 7; vector<ll> dp(3, 0); dp[0] = 1; for(auto x: nums) { if(x == 0) { dp[0] = (dp[0] * 2) % M; } else if(x == 1) { dp[1] = (dp[0] - 1 + dp[1] * 2) % M; // dp[0] - 1: remove the empty set } else if(x == 2) { dp[2] = (dp[1] + dp[2] * 2) % M; } } return dp[2]; } }; // corresponding sequences // dp[0]: 0 // dp[1]: 01 // dp[2]: 012