class Solution(object):
def combinationSum(self, candidates, target):
"""
:type candidates: List[int]
:type target: int
:rtype: List[List[int]]
"""
result = []
self.backtracking(result, candidates, target, 0, [])
return result
def backtracking(self, result, candidates, target, index, subset):
# 终止条件
sum_ = sum([i for i in subset])
if sum_ > target: # 剪枝操作
return
if sum_ == target:
result.append(subset[:])
return
for i in range(index, len(candidates)):
subset.append(candidates[i])
self.backtracking(result, candidates, target, i, subset)
subset.pop()
回溯法专题--LC39组合总和
于 2022-03-22 22:05:32 首次发布