注意的点:
1、也是和组合一样通过控制starti来控制visited,唯一不同的就是收集路径的位置
解法:回溯
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
res, path = [], []
# 回溯,用starti控制visited
def dfs(alist, starti):
nonlocal res, path
res.append(path[:])
if not alist:
return
for i in range(starti, len(alist)):
path.append(alist[i])
dfs(alist[:i] + alist[i+1:], i)
path.pop()
dfs(nums, 0)
return res