- 递推公式法:
每次将nums数组中的一个元素添加到结果数组中的每个元素上,形成一个新的数组,再和原结果数组合并。
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
if not nums:
return [[]]
ans = [[]]
for i in nums:
ans += [x+[i] for x in ans]
return ans
- 位运算法:
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
ans = []
l = len(nums)
for i in range(2**l):
res = []
for j in range(l):
if i&1:
res.append(nums[j])
i = i>>1
ans.append(res)
return ans