題目描述:
給定乙個整型陣列, 你的任務是找到所有該陣列的遞增子串行,遞增子串行的長度至少是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 給定陣列中可能包含重複數字,相...