题目描述
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
解题思路
- 采取遍历的方法
- 每遇到一个数,就将已有的子集加上这个数,追加到已有的子集数组中。
- 例如:初始化子集数组:arr = [ [ ] ]
- nums = [1, 2, 3]
数组遍历第一个为:1
把它加到已有的所有子集中,并保留原来的子集
得到:arr = [[ ]
, [1] ] - 数组遍历第一个为:2
把它加到已有的所有子集中,并保留原来的子集
得到:arr = [[ ], [1]
, [2], [1, 2] ] - 数组遍历第一个为:3
把它加到已有的所有子集中,并保留原来的子集
得到:arr = [[ ], [1], [2], [1, 2]
, [3], [1, 3], [2, 3], [1, 2, 3] ]
- nums = [1, 2, 3]
代码
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
arr = [[]]
for n in nums:
l = len(arr)
for i in range(l):
temp = [] + arr[i]
temp.append(n)
arr.append(temp)
return arr