LeetCode 78 子集 位運算 回溯演算法

2021-10-09 15:19:18 字數 983 閱讀 7776

給定一組不含重複元素的整數陣列 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, 2, 3] -> 111

而乙個包含n個元素的集合,其子集個數為2^n正好對應000~111

class

solution

return res;

}}

dfs(pos, n) 表示 pos:當前處理元素的位置 n:元素總數

重點理解:

1.當進行到dfs(pos, n)時:①[0, pos-1]已經確定 ②[pos, n)未確定 ③正在確定pos

2.確定pos位置有兩個行為:①選取 ②不選取

3.①選取 -> 將其add到列表中 ②不選取 -> remove列表末尾的元素

class

solution

sub.

add(nums[pos]);

// 取->新增這個位置的元素

dfs(pos +

1, nums)

;// 遞迴下乙個位置

sub.

remove

(sub.

size()

-1);

// 不取->回溯!

dfs(pos +

1, nums)

;// 遞迴下乙個位置

}public list

>

subsets

(int

nums)

}

leetcode 78 子集(位運算求子集)

給定一組不含重複元素的整數陣列 nums,返回該陣列所有可能的子集 冪集 說明 解集不能包含重複的子集。示例 輸入 nums 1,2,3 輸出 3 1 2 1,2,3 1,3 2,3 1,2 分析 含有n個元素的集合共有 1 一位後與 1的方式判斷最後一位是0還是1,如果是1,就把對應位置的數加入到...

leetcode78子集 中等

給定一組不含重複元素的整數陣列 nums,返回該陣列所有可能的子集 冪集 說明 解集不能包含重複的子集。示例 輸入 nums 1,2,3 輸出 3 1 2 1,2,3 1,3 2,3 1,2 要列出陣列的所有子集,因為陣列是不含重複元素的,所以對於每乙個位置的數字,有兩個選擇,選或者不選。可以畫出以...

LeetCode 78 子集 Go 實現

子集 給你乙個整數陣列 nums 陣列中的元素 互不相同 返回該陣列所有可能的子集 冪集 解集 不能 包含重複的子集。你可以按 任意順序 返回解集。示例 1 輸入 nums 1,2,3 輸出 1 2 1,2 3 1,3 2,3 1,2,3 示例 2 輸入 nums 0 輸出 0 func subse...