方法一:迭代
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
res = [[]]
for i in nums :
res = res + [[i] + num for num in res] #结果加上新的元素和结果匹配的
return res
方法二:回溯:不适合就退回上一步
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
n = len(nums)
res = []
def helper(i,tmp) :
res.append(tmp) #有效结果
for j in range(i,n) : #回溯范围 超出索引即不再配对
helper(j+1,tmp + [nums[j]]) #答案更新 和之后的每一层配对
helper(0,[]) #传入参数 索引和有效结果
return res
本文介绍两种生成集合所有子集的方法:迭代法与回溯法。迭代法通过不断将新元素加入已有子集中生成新子集;回溯法则采用递归方式,逐层构造子集并回退至上一层继续构造。
487

被折叠的 条评论
为什么被折叠?



