題目
給定一組不含重複元素的整數陣列 nums,返回該陣列所有可能的子集(冪集)。
使用庫函式
def
subsets
(self, nums: list[
int])-
> list[list[
int]]:
res =
for i in
range
(len
(nums)+1
):for tmp in itertools.combinations(nums, i)
:# 排列組合
return res
迭代def
subsets
(self, nums: list[
int])-
> list[list[
int]]:
res =[[
]]for i in nums:
res = res +
[[i]
+ num for num in res]
# 每次都是i的基礎上加的所以不可能重複
return res
遞迴(回溯演算法)def
subsets
(self, nums: list[
int])-
> list[list[
int]]:
res =
n =len(nums)
defhelper
(i, tmp)
:for j in
range
(i, n)
: helper(j +
1,tmp +
[nums[j]])
helper(0,
)return res
cpp:
vector
int>>
subsets
(vector<
int>
& nums)
void
helper
(vector
int>
>
& res,vector<
int> tmp,vector<
int>
& nums,
int level)
for(
int i=level;i
size()
;i++
)}
位運算
陣列的每個元素,可以有兩個狀態:
1、不在子陣列中(用 00 表示);
2、在子陣列中(用 11 表示)。
從 0 到 2 的陣列個數次冪(不包括)的整數的二進位制表示就能表示所有狀態的組合。
分治
LeetCode題解 78 子集
給定一組不含重複元素的整數陣列 nums,返回該陣列所有可能的子集 冪集 說明 解集不能包含重複的子集。示例 輸入 nums 1,2,3 輸出 3 1 2 1,2,3 1,3 2,3 1,2 與 leetcode題解 77.組合 的解法很相似 組合的問題 排行有多少種 共2 n種 建立每一種位串到陣...
力扣 78 子集
給定一組不含重複元素的整數陣列 nums,返回該陣列所有可能的子集 冪集 說明 解集不能包含重複的子集。該題目來自力扣題庫 示例輸入 nums 1,2,3 輸出 1 2 1,2 3 1,3 2,3 1,2,3 思路使用位圖法 如果該陣列的長度是n,那麼該陣列的所有子集數目是2 n.使用兩層迴圈,外層...
力扣 78 子集
給定一組不含重複元素的整數陣列 nums,返回該陣列所有可能的子集 冪集 說明 解集不能包含重複的子集。示例 輸入 nums 1,2,3 輸出 3 1 2 1,2,3 1,3 2,3 1,2 利用位數為陣列長度的二進位制數,這個二進位制數所能表示的元素個數剛好等於這個冪集的子集的個數,且二進位制數的...