LeetCode 40:组合总和 II(回溯 / 同层去重 / 只能用一次)ACERS 解析

副标题 / 摘要 如果说 39. 组合总和 教你“当前值还能继续用”,那 40. 组合总和 II 教你的就是下一层升级:数组里会出现重复值、每个位置只能用一次、去重必须发生在正确的树层上。 预计阅读时长:14~16 分钟 标签:回溯、去重、剪枝、组合搜索 SEO 关键词:Combination Sum II, 组合总和 II, 回溯, 同层去重, 剪枝, LeetCode 40 元描述:从题目本身一步一步推出 LeetCode 40 的稳定解法,真正理解排序、i + 1 递归和“同层去重”规则。 A — Algorithm(题目与算法) 题目还原 给定一个候选数组 candidates 和一个目标值 target, 找出所有和为 target 的不同组合,并以列表形式返回。 candidates 中的每个数字在每个组合里 最多只能使用一次。 最终答案中不能包含重复组合。 输入输出 名称 类型 描述 candidates int[] 候选数组,允许出现重复值 target int 目标和 返回 int[][] 所有和为 target 的不同组合 示例 1 输入:candidates = [10,1,2,7,6,1,5], target = 8 输出: [ [1,1,6], [1,2,5], [1,7], [2,6] ] 示例 2 输入:candidates = [2,5,2,1,2], target = 5 输出: [ [1,2,2], [5] ] 约束 1 <= candidates.length <= 100 1 <= candidates[i] <= 50 1 <= target <= 30 目标读者 已经做完 39. 组合总和,想继续搞清“不能重复选”之后模板怎么变的学习者 会写回溯框架,但一碰到输入里有重复值就容易写乱去重逻辑的读者 想真正掌握“同层去重”而不是硬背一句 if i > start and ... 的开发者 背景 / 动机 这道题是 39 的自然下一题,因为它同时改了两条规则: ...

2026年4月17日 · 8 分钟 · map[name:Jeanphilo]