leetcode 491 遞增子串行

2022-05-05 10:03:08 字數 714 閱讀 9968

給定乙個整型陣列, 你的任務是找到所有該陣列的遞增子串行,遞增子串行的長度至少是2。

示例:

輸入: [4, 6, 7, 7]

輸出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]

說明:

給定陣列的長度不會超過15。

陣列中的整數範圍是 [-100,100]。

給定陣列中可能包含重複數字,相等的數字應該被視為遞增的一種情況。

這種演算法的複雜度o(n^2)

通過dfs的方法找到第i位數右邊所有比它大的數,壓並且壓到sbuseq中,當subseq的長度大於1的時候就把它壓到ans中。這樣就能找到所有遞增的子串行, 但是可能會出現重複的情況;

比如上面的[4,6,7,7]通過dfs的方法就會出現兩個[4,6,7]的子串行,這裡用unorder_set來儲存subseq的最後乙個元素,當新來的元素和set的最後乙個元素相等的時候,就不壓入subseq。這樣就能避免重複子序列的出現

1 #include2 #include3

class

solution 15}

16}1718 vectorint>> findsubsequences(vector&nums)

24 };

其實拿到題,知道思路,就是不能聯想到怎麼實現,對遞迴的使用還是不熟練,多多積累吧

leetcode491 遞增子串行

這一題使用dfs回溯法,我們先來分析一下這種方法的時間複雜度 如圖。由於我們知道陣列的長度不超過15,所以這顆樹最壞的情況的啊hi見複雜度為2 15,也就是幾十萬的計算量,是可以接收的。那麼我們根據思路寫出演算法 class solution public void dfs set ans,list...

leetCode 491 遞增子串行

給定乙個整型陣列,你的任務是找到所有該陣列的遞增子串行,遞增子串行的長度至少是2。示例 輸入 4,6,7,7 輸出 4 6 4,7 4 6,7 4 6,7 7 6,7 6 7,7 7 7 4,7 7 說明 給定陣列的長度不會超過15。陣列中的整數範圍是 100 100 給定陣列中可能包含重複數字,相...

leetcode 491 遞增子串行

給定乙個整型陣列,你的任務是找到所有該陣列的遞增子串行,遞增子串行的長度至少是2。示例 輸入 4,6,7,7 輸出 4,6 4,7 4,6,7 4,6,7,7 6,7 6,7,7 7,7 4,7,7 說明 給定陣列的長度不會超過15。陣列中的整數範圍是 100,100 給定陣列中可能包含重複數字,相...