leetcode 491遞增子串行 1

2021-09-01 09:31:48 字數 975 閱讀 6182

題目描述:

給定乙個整型陣列, 你的任務是找到所有該陣列的遞增子串行,遞增子串行的長度至少是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]。

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

注意使用set來排除重複!

另外,可以看看最長遞增子串行的求法

對於題目的錯誤理解,讓我花費了快4個小時!

class solution 

if(jihe.count(vi)==0&&vi.size()>1)

}} //這些**沒有使用,可以用來列舉乙個集合的子集

*/void dfs(int x,int index,int level,vector& nums)

vectortemp(b,b+level+1);

if(jihe2.count(temp)==0&&temp.size()>1)

};

可以看看最長遞增子串行的求法:

設f(i)表示l中以ai為末元素的最長遞增子串行的長度。則有如下的遞推方程:

這個遞推方程的意思是,在求以ai為末元素的最長遞增子串行時,找到所有序號在l前面且小於ai的元素aj,即jf[i]-1)

f[i]=f[j]+1;//更新f[i]的值。}}

system.out.println(f[n-1]);

}

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 給定陣列中可能包含重複數字,相...