subsets
Given a set ofdistinctintegers,nums, return all possible subsets.
Note:The solution set must not contain duplicate subsets.
For example,
Ifnums=[1,2,3], a solution is:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]分析
和permutation比较,每次for loop从pos开始,因为不在乎顺序。所以pos起可以防止重复。
1.在dfs里Loop,不是在总函数里,记得加空集。等于是每层枚举可能性,一种是不取,另一种是取for loop里一个。for loop理解为从起点起,跳入后面某个点继续,所以总要记录到达的点pos(新起点)
2.不需要等Pos == nums.length再加入ret, 因为集合数目不定
python
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
res =[]
n = len(nums)
def dfs(pos, path):
res.append(path)
for i in range(pos,n):
dfs(i+1,path+[nums[i]])#注意是i+1
dfs(0,[])
return res
Java
不用for loop
Last updated
Was this helpful?