78. 子集 - medium
给你一个整数数组 nums
,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
示例 1:
输入:nums = [1,2,3] 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
示例 2:
输入:nums = [0] 输出:[[],[0]]
提示:
1 <= nums.length <= 10
-10 <= nums[i] <= 10
nums
中的所有元素 互不相同
看了题解思路,使用 2 进制 1 表示取当前位,0 表示不取。假设数组为 [0, 1, 2]
总共有 000
, 001
, 010
...111
种取法(2^n - 1)。
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
results = []
n = len(nums)
for mask in range(1 << n):
vs = []
for i in range(n + 1):
if mask >> i & 1:
vs.append(nums[i])
results.append(vs)
mask += 1
return results