python-leetcode-组合总和
39. 组合总和 - 力扣(LeetCode)
class Solution:
def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
result = []
def backtrack(start, current_combination, current_sum):
# 如果当前组合的和等于 target,将其添加到结果集中
if current_sum == target:
result.append(current_combination.copy())
return
# 如果当前组合的和大于 target,直接返回
if current_sum > target:
return
# 遍历候选数字
for i in range(start, len(candidates)):
# 将当前数字添加到组合中
current_combination.append(candidates[i])
# 递归处理下一个数字(允许重复使用当前数字)
backtrack(i, current_combination, current_sum + candidates[i])
# 回溯,移除当前数字
current_combination.pop()
# 从第一个数字开始递归
backtrack(0, [], 0)
return result