版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a786150017/article/details/82961935
题目描述
没有重复数字的全组合
例子
Input: nums = [1,2,3]
Output:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
解法
法1 - 常规DFS
法2 - 非递归,可以看出是在上一次结果的基础上加入新元素
解法1
递归DFS
class Solution(object):
def subsets(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
res = [[]]
self.dfs(nums, [], res)
return res
def dfs(self, nums, temp, res):
if not nums:
return
for i in range(len(nums)):
temp.append(nums[i])
res.append(temp[:])
self.dfs(nums[i+1:], temp, res)
temp.pop()
解法2
非递归
class Solution(object):
def subsets(self, nums):
res = [[]]
for num in nums:
res += [temp + [num] for temp in res]
return res