蓝桥杯-基础
蓝桥杯-简单
蓝桥杯-字符串
蓝桥杯-递归
蓝桥杯-堆栈队列链表
蓝桥杯-模拟
蓝桥杯-搜索
蓝桥杯-动态规划
leetcode-数组
leetcode-链表
leetcode-字符串
leetcode-栈与队列
leetcode-排序算法
leetcode-双指针
leetcode-树
leetcode-哈希表
leetcode-图与搜索
leetcode-数学
leetcode-设计
leetcode-动态规划
leetcode-回溯算法
leetcode-贪心
进阶任务
给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。
candidates 中的每个数字在每个组合中只能使用一次。
说明:
所有数字(包括目标数)都是正整数。
解集不能包含重复的组合。
示例 1:
输入: candidates = [10,1,2,7,6,1,5], target = 8,
所求解集为:
[
[1, 7],
[1, 2, 5],
[2, 6],
[1, 1, 6]
]
示例 2:
输入: candidates = [2,5,2,1,2], target = 5,
所求解集为:
[
[1,2,2],
[5]
]
#两种方法
class Solution:
def combinationSum2(self, candidates: List[int], target: int) -> List[List[int]]:
if sum(candidates) < target:
return []
res = []
path = []
def backtracking(add,index):
if add > target:
return
if add == target:
if path not in res:
res.append(path[:])
return
for i in range(index, len(candidates)):
if add + candidates[i] > target:
return
path.append(candidates[i])
add += candidates[i]
backtracking(add,i+1)
add -= path.pop()
candidates.sort()
backtracking(0,0)
return res
资料来源 LeetCode刷题之路:40. 组合总和 II 感谢您提交【40-组合总和 II】的相关学习资料
您提交的内容有机会作为知识树里的重要参考资料,帮助更多用户学习:
*CSDN的站内内容是更容易被采纳的哦
博客作者 as812252319
前往答题