給定一組不含重複元素的整數陣列 nums,返回該陣列所有可能的子集(冪集)。
說明:解集不能包含重複的子集。
示例:輸入: nums = [1,2,3]
輸出:[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
]
class
solution
return res;
}void
recruise
(vector<
int>
& nums,vector
int>>
& res,
int size,
int pos,vector<
int>
&arr)
for(
int i=pos;i
size()
;i++)}
};
**:
class
solution
void
recruise
(vector<
int>
& nums,vector
int>>
& res,
int pos,vector<
int>
&arr)}}
;
上面的**沒有必要用pos,還應該簡化:
總結下這種對陣列的遍歷,通過dfs中的for迴圈,列出以各個元素開頭的情況。如【1,2,3】,可以分為1開頭,2開頭,3開頭的情況。
後記:為什麼這種列舉子集型別的dfs,在if判斷語句後總是用的for迴圈來遞迴呢?而二叉樹遍歷這種dfs又不用這個for迴圈?
這裡的for迴圈其實是這一層選擇空間,也就是可以有多少個選擇可供選擇; 而二叉樹的遍歷其實也是一樣,因為選擇空間中只有左或右;
leetcode 78 子集 回溯演算法 詳解!
本文 已經收錄,裡面還有leetcode刷題攻略 各個型別經典題目刷題順序 思維導圖,可以fork到自己倉庫,有空看一看一定會有所收穫,如果對你有幫助也給乙個star支援一下吧!給定一組不含重複元素的整數陣列 nums,返回該陣列所有可能的子集 冪集 說明 解集不能包含重複的子集。示例 輸入 num...
leetcode 78子集(回朔法)
由於leetcode刷過的題,不會儲存,所以將 以及做題時的思路記錄在此,方便日後整理複習思路 class solution def subsets self,nums list int list list int self.result if len nums 0 return self.find...
LeetCode 78 子集 位運算 回溯演算法
給定一組不含重複元素的整數陣列 nums,返回該陣列所有可能的子集 冪集 說明 解集不能包含重複的子集。示例 輸入 nums 1,2,3 輸出 3 1 2 1,2,3 1,3 2,3 1,2 可以使用0 1序列來表示每個子集,0表示不包含此元素,1表示包含此元素。例如 1 100 1,2 110 1...