1. 组合总和
题目链接:https://leetcode.cn/problems/combination-sum/
给定一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。
class Solution:
def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
def backtrack(curr_list, curr_sum, start):
if curr_sum == target:
res.append(curr_list[:])
return
if curr_sum > target:
return
for i in range(start, len(candidates)):
curr_list.append(candidates[i])
backtrack(curr_list, curr_sum + candidates[i], i)
curr_list.pop()
res = []
backtrack([], 0, 0)
return res
2. 组合总和 II
题目链接:https://leetcode.cn/problems/combination-sum-ii/
给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。
class Solution:
def combinationSum2(self, candidates: List[int], target: int) -> List[List[int]]:
def backtrack(curr_list, curr_sum, start):
if curr_sum == target:
res.append(curr_list[:])
return
if curr_sum > target:
return
for i in range(start, len(candidates)):
if i > start and candidates[i] == candidates[i - 1]:
continue
curr_list.append(candidates[i])
backtrack(curr_list, curr_sum + candidates[i], i + 1)
curr_list.pop()
candidates.sort()
res = []
backtrack([], 0, 0)
return res
标签:curr,target,backtrack,Study,list,Part20,Algorithms,candidates,sum
From: https://www.cnblogs.com/stephenxiong001/p/18395403