78. 子集(medium)
2019-06-03 本文已影响0人
genggejianyi
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
- show the code:
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
res = [[]]
for i in range(len(nums)):
for subres in res[:]:
res.append(subres+[nums[i]])
return res
- 参考评论大神的方法,可以找出规律:从前向后遍历,每新来一个数就是将已有子集加上这个数即可。
- 初始集合为
res = [[]]
,可以从前向后遍历数组,也可以从后向前遍历数组,每新来一个数就是已有集合中的每个子集都加上这个数即可。 - 这里一个小trick:循环每个子集时要用
res[:]
切片操作,这样在循环过程中,res
的变化不会影响循环。