LeetCode偶尔一题 —— 39. Combination Sum(回溯算法系列)
题目描述
Given a set of candidate numbers (
candidates
) (without duplicates) and a target number (target
), find all unique combinations incandidates
where the candidate numbers sums totarget
.The same repeated number may be chosen from candidates unlimited number of times.
Note:
- All numbers (including target) will be positive integers.
- The solution set must not contain duplicate combinations.
大意:给定一组不含重复数字的数组和一个目标数字,在数组中找出所有数加起来等于给定的目标数字的组合。
输入
candidates = [2,3,6,7], target = 7
输出
[ [7], [2,2,3] ]
分析题目
由于我们需要找到多个组合,简单的使用 for
循环肯定是不行的,这时候我们可以使用回溯算法来解决这个问题。
用回溯算法解决问题的一般步骤:
- 针对所给问题,定义问题的解空间,它至少包含问题的一个(最优)解。
- 确定易于搜索的解空间结构,使得能用回溯法方便地搜索整个解空间 。
- 以深度优先的方式搜索解空间,并且在搜索过程中用剪枝函数避免无效搜索。
根据题目的描述我们知道它满足了我们所说的步骤一,下面我们来确定搜索的思路