微信公众号:醉前端
关注可了解更多解题技巧。问题或建议,请公众号留言;
题目
Q:
给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。
candidates中的数字可以无限制重复被选取。(说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。)
- 示例 1:
输入: candidates = [2,3,6,7], target = 7,
所求解集为: [ [7], [2,2,3] ]
- 示例 2:
输入: candidates = [2,3,5], target = 8,
所求解集为: [ [2,2,2,2], [2,3,3], [3,5] ]
答案
const combinationSum11 = (candidates, target) => {
candidates.sort((a, b) => a - b);
let res = [];
let path = [];
const helper = (candidates, target, begin, res, path) => {
if (target < 0) return;
if (target === 0) {
path = path.slice();
res.push(path);
return;
}
for (let i = begin; i < candidates.length; i++) {
path.push(candidates[i]);
helper(candidates, target - candidates[i], i, res, path);
path.pop();
}
}
helper(candidates, target, 0, res, path);
return res;
};
每日更新一道算法题,加个关注呗老铁!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。