leetcode 78 子集 回溯法

2021-10-23 02:26:40 字數 1243 閱讀 4379

給定一組不含重複元素的整數陣列 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...