39.组合总和
正好刚做完求数独复习完回溯,这个直接就做了。注意candidates[index:]
这里,从index开始搜索可以保证
没有重复的,减少搜索空间
class Solution:
def select(self, a, candidates, target) -> List[List[int]]:
"""
:param a: 已经选择的元素
:param target: 目标结果
"""
if sum(a) == target:
return [a]
if sum(a) > target:
return []
result = []
for index, candidate in enumerate(candidates):
res = self.select(a + [candidate], candidates[index:], target)
if res:
result.extend(res)
return result
def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
return self.select([], candidates, target)