题目描述:
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
不多说,上code
代码:
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
res = [[]]
for i in nums:
new = []
for j in res:
new.append(j+[i])
res += new
return res
其实很好理解,就是每次循环给你一个元素,然后你把它放到你将要return的列表里面嘛,然后你就利用list可以相加的性质进行运算,我是这么想的,但是很多人都说有更好的解法比如那个深度优先算法,感觉我还是了解不够,直接贴图吧...
class Solution:
def __init__(self):
self.results = []
def subsets(self, nums):
self.search(sorted(nums), [], 0)
return self.results
def search(self, nums, S, index):
if index == len(nums):
self.results.append(S)
return
self.search(nums, S + [nums[index]], index + 1)
self.search(nums, S, index + 1)