73328854064323.jpg

微信公众号:醉前端
关注可了解更多解题技巧。问题或建议,请公众号留言;

题目

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;
};
每日更新一道算法题,加个关注呗老铁!
每日更新一道算法题,加个关注呗老铁!

醉前端
174 声望83 粉丝

Time is a bird forever on the ring......