LeetCode 1955. 统计特殊子序列的数目
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 1955. 统计特殊子序列的数目
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
特殊序列 是由 正整數 個 0 ,緊接著 正整數 個 1 ,最后 正整數 個 2 組成的序列。
比方說,[0,1,2] 和 [0,0,1,1,1,2] 是特殊序列。
相反,[2,1,0] ,[1] 和 [0,1,2,0] 就不是特殊序列。
給你一個數組 nums (僅 包含整數 0,1 和 2),請你返回 不同特殊子序列的數目 。
由于答案可能很大,請你將它對 10^9 + 7 取余 后返回。
一個數組的 子序列 是從原數組中刪除零個或者若干個元素后,剩下元素不改變順序得到的序列。
如果兩個子序列的 下標集合 不同,那么這兩個子序列是 不同的 。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/count-number-of-special-subsequences
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
class Solution { public:int countSpecialSubsequences(vector<int>& nums) {long long p0 = 0, p1 = 0, p2 = 0, mod = 1e9+7;for(auto n : nums){if(n==0){p0 = (p0*2+1)%mod;//前面的0有多少種取法,2進制}else if(n==1){p1 = (p0+p1*2)%mod;//以1結尾的種類//當前1是第一個,前面0結尾的有 p0種//當前1不取,前面以1結尾的有 p1種//當前1取,前面以1結尾的有 p1種// 三種情況合起來}else{p2 = (p1+p2*2)%mod;//同理}}return p2;} };156 ms 168.1 MB C++
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的LeetCode 1955. 统计特殊子序列的数目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 2136. 全部开花的
- 下一篇: LeetCode 1865. 找出和为指