leetcode39.组合总和

leetcode39.组合总和

题目

给定一个无重复元素的正整数数组 candidates 和一个正整数 target ,找出 candidates 中所有可以使数字和为目标数 target 的唯一组合。

candidates 中的数字可以无限制重复被选取。如果至少一个所选数字数量不同,则两种组合是唯一的。

对于给定的输入,保证和为 target 的唯一组合数少于 150 个。

用例

输入: candidates = [2,3,6,7], target = 7
输出: [[7],[2,2,3]]
输入: candidates = [2,3,5], target = 8
输出: [[2,2,2,2],[2,3,3],[3,5]]
输入: candidates = [2], target = 1
输出: []
输入: candidates = [1], target = 1
输出: [[1]]
输入: candidates = [1], target = 2
输出: [[1,1]]

求解

/**
 * @param {number[]} candidates
 * @param {number} target
 * @return {number[][]}
 */
const combinationSum = (candidates, target) => {
  let res = [];
  find_sum_target(0, [], 0);
  return res;

  function find_sum_target(index,tmp,sum){
      if(sum>target){
          return
      }
      if(sum==target){
          res.push(tmp.slice())
          return
      }
      for(let i = index;i<candidates.length;i++){
          tmp.push(candidates[i]);
          find_sum_target(i,tmp,sum+candidates[i])
          tmp.pop()
      }
  } 
};
posted @ 2021-11-04 13:09  BONiii  阅读(35)  评论(0)    收藏  举报