问题
解答
回溯算法
由幂集的定义,比如要写出[1,2,3]的幂集,先将1作为第一个元素搜索。2要,3要,就添加[1,2,3],回溯2要3不要就添加[1,2],回溯2不要3要,添加[1,3],依此思路完成回溯代码。
核心思路:
二元选择,选或是不选
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
self.res = []
self.backtrack([], 0, nums)
return self.res
def backtrack(self, sol, index, nums):
if index == len(nums):
self.res.append(sol)
return
self.backtrack(sol+[nums[index]], index+1, nums)
self.backtrack(sol, index+1, nums) #这两行代码就表示选或是不选此位元素
调试结果: