Hot100:组合总和(Combination Sum)回溯剪枝 / 可重复选取 ACERS 解析
副标题 / 摘要 组合总和是回溯专题里第一道真正把“组合模板 + 目标约束 + 剪枝”揉在一起的题。你要学会的不只是枚举,而是怎样用排序和剩余值 remain 把搜索树收紧。 预计阅读时长:12~15 分钟 标签:Hot100、回溯、组合、剪枝 SEO 关键词:Combination Sum, 组合总和, 回溯, 剪枝, DFS 元描述:通过 LeetCode 39 建立组合型回溯加剪枝模板,理解可重复选取、排序与 remain 约束。 目标读者 已经做过 78. 子集,准备把回溯模板升级到“带约束搜索”的学习者 想搞清楚“同一个数可以重复使用”时递归边界怎么写的开发者 需要做资源打包、预算组合、规格拼装类组合搜索的工程师 背景 / 动机 这题是很多人真正开始理解“回溯不是暴力乱搜”的分水岭。 因为它同时有三件事: 仍然是组合问题,所以要保持顺序无关 候选数字可以重复使用 目标和 target 给了你天然剪枝条件 如果你只会硬搜,代码虽然也许能过,但模板不稳定。 而一旦你把“排序 + remain + 从 i 开始递归”的逻辑想清楚,这一类题都会顺很多。 核心概念 path:当前正在尝试的一组组合 remain:当前还差多少才能凑到目标值 从 i 继续递归:表示当前数字可以重复使用 排序剪枝:若 candidates[i] > remain,后面的数更大,可直接停止 A — Algorithm(题目与算法) 题目还原 给定一个无重复元素的整数数组 candidates 和一个目标值 target, 找出所有和为 target 的不同组合。 ...