例如
输入: candidates = [2,3,5], target = 8
输出: [[2,2,2,2],[2,3,3],[3,5]]
搜索回溯
对于这类寻找所有可行解的题,我们都可以尝试用「搜索回溯」的方法来解决。
注意递归思想,代码的流程很难解释,自己好好品尝下就懂了
var combinationSum = function (arr, target) {
var res = [];
var brr = [];
f(0, 0);
return res;
function f(j, sum) {
if (sum == target) return res.push(brr.slice());
if (sum > target) return;
for (var i = j; i < arr.length; i++) {
brr.push(arr[i]);
sum += arr[i];
f(i, sum);
brr.pop();
sum -= arr[i];
}
}
};
代码调试
var candidates = [2,3,5], target = 8
combinationSum(candidates,target)