lintcode 第17題 子集

2021-08-07 18:43:05 字數 1450 閱讀 1649

要求:給定乙個含不同整數的集合,返回其所有的子集

注意事項:子集中的元素排列必須是非降序的,解集必須不包含重複的子集。 樣例

如果 s =[1,2,3],有如下的解:

[

[3],

[1],

[2],

[1,2,3],

[1,3],

[2,3],

[1,2],

]

思路:不考慮非降序,乙個個數字插進去,每一層插進去乙個,每乙個都有兩種情況,加進去和不加進去。就是遍歷陣列裡面所有的元素,每次取出第乙個list,往裡面加入,或者不加入,就有了兩種情況的list產生,再把這兩種list加進去,依次迴圈。

這樣的做法是降序的,不符合題意,但是在此處還是貼一下**。

public class solution 

res.add(list);

for(int i=0;itemp=res.get(0);

res.remove(0);

arraylisttemp2=new arraylist(temp);

temp2.add(temp2.size(),nums[i]);

res.add(temp2);

res.add(temp);}}

return res;}}

我們看到上面**的錯誤樣例如下:

輸入

[4,1,0]
輸出

[,[0],[1],[1,0],[4],[4,0],[4,1],[4,1,0]]
期望答案

[,[0],[0,1],[0,1,4],[0,4],[1],[1,4],[4]]
為什麼會這樣子呢,其實非降序這個要求只是乙個幌子,我們只要在加入之前對陣列進行排序就可以通過啦。

**如下:

public class solution 

res.add(list);

arrays.sort(nums);

for(int i=0;itemp=res.get(0);

res.remove(0);//把第乙個取出來

arraylisttemp2=new arraylist(temp);

temp2.add(temp2.size(),nums[i]);

res.add(temp2);//加入乙個數,放進去

res.add(temp);//不加數,放進去}}

return res;}}

如果有所幫助,臉皮厚求個贊~

技術之路不在一時,山高水長,縱使緩慢,馳而不息。

lintcode 子集問題

這裡的子集問題是指給定乙個列表求它的所有不重複子集的問題。這個問題分為兩類 一類是所給列表包含重複元素,另一類是所給列表不含重複元素。分別對應lintcode中17和18題。這裡使用深度優先搜尋的思想,遞迴求解。class solution 排序 sort nums.begin nums.end 遞...

LeetCode第78題 子集

給定一組不含重複元素的整數陣列 nums,返回該陣列所有可能的子集 冪集 說明 解集不能包含重複的子集。示例 輸入 nums 1,2,3 輸出 3 1 2 1,2,3 1,3 2,3 1,2 幫助理解 newsets 1 2 2 1,2 3 3 1,3 3 1,3 2,3 3 1,3 2,3 1,2...

LeetCode第78題子集

題目描述 給定一組不含重複元素的整數陣列 nums,返回該陣列所有可能的子集 冪集 說明 解集不能包含重複的子集。解題思路 對於backtrack函式 1 新增結果 2 for語句,在選擇列表中選擇 做選擇 templist.add nums i 回溯,進入下一層 backtrack list,te...