78. 子集
class Solution(object):
def subsets(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
res = []
tmp = []
n = len(nums)
def dfs(i):
if i == n:
#print tmp
res.append(tmp[:])
return
tmp.append(nums[i])
dfs(i+1)
tmp.pop()
dfs(i+1)
dfs(0)
return res
思路:
回溯。当前值可以选择放入或不放入。
综上,时间复杂度O(n*2^n),空间复杂度是O(n)。有2 ^ n个状态,需要O(n)的时间构建数组。