子集 迭代法和遞迴法

2022-07-07 20:30:13 字數 2138 閱讀 5775

給你乙個整數陣列nums,返回該陣列所有可能的子集(冪集)。解集不能包含重複的子集。

示例 1:

輸入:nums = [1,2,3]

輸出:[,[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]

示例 2:

輸入:nums = [0]

輸出:[,[0]]

class solution 

}ans.add(new arraylist(t));

}return ans;}}

注意到這裡1 << n1 << i都用了位運算的左移操作。

nums = [1,2,3]為例:

mask < (1 << n),即mask < 8

mask & (1 << i),即mask & 001mask & 010mask & 100

mask = 0時,mask & (1 << i)0,所以這裡會向集合ans新增乙個空的集合t

mask = 1時,001 & 001 != 0,所以這裡會向集合t新增乙個nums[0]。注意,1左移0位為001

mask = 3時,011 & 001 != 0011 & 010 != 0,所以這裡會向集合t新增nums[1]nums[2]

nums = [1,2,3]為例:

dfs cur=0 t=1

dfs cur=1 t=1,2

dfs cur=2 t=1,2,3

dfs cur=3 新增[1,2,3]

dfs cur=2 t=1,2

dfs cur=3 新增[1,2]

dfs cur=1 t=1

dfs cur=2 t=1,3

dfs cur=3 新增[1,3]

dfs cur=2 t=1

dfs cur=3 新增[1]

dfs cur=0

dfs cur=1 t=2

dfs cur=2 t=2,3

dfs cur=3 新增[2,3]

dfs cur=2 t=2

dfs cur=3 新增[2]

dfs cur=1

dfs cur=2 t=3

dfs cur=3 新增[3]

dfs cur=2

dfs cur=3 新增

注意,遞迴的邊界條件為cur == nums.lengthcur是呼叫方法dfs時傳入的,而不是集合t的元素個數。

參考:

快速冪 迭代法和遞迴法 python實現

迭代法 def quick power x,n res 1while n 0 如果冪為奇數,把x記錄下來,儲存在res中 if n 2 1 res x 如果冪為偶數 則不記錄,只是處理x,n x x n 1 return res遞迴法 def quick power x,n 特殊情況 if n 0 ...

求字串長度 迭代法和遞迴法)

咱們先來複習一下strlen函式 strlen 字元陣列 它是測試字串長度的函式,函式的值為字串中的實際長度 不包括 0 在內 例如 char str 10 china printf d strlen str 輸出的結果是5 也可以直接測試字串常量的長度,例如 strlen china includ...

一文讀懂鍊錶反轉(迭代法和遞迴法)

單向鍊錶反轉的方法有很多,其中用的比較多的是迭代法和遞迴法,迭代法通俗易懂,遞迴法相對來說比較難理解一些。單向鍊錶反轉圖示 一 迭代法 實現 import lombok.allargsconstructor import lombok.data data allargsconstructor pub...