Skip to content
js
/*
 * @lc app=leetcode.cn id=39 lang=javascript
 *
 * [39] 组合总和
 */

// @lc code=start
/**
 * @param {number[]} candidates
 * @param {number} target
 * @return {number[][]}
 */
var combinationSum = function (candidates, target) {
  const res = [],
    path = [];
  function backtracking(j, sum) {
    if (sum > target) return;
    if (sum === target) {
      res.push(path.slice());
      return;
    }

    for (let i = j; i < candidates.length; i++) {
      const n = candidates[i];
      // 剪枝
      if (n > target - sum) {
        continue;
      }
      path.push(n);
      sum += n;
      backtracking(i, sum);
      path.pop();
      sum -= n;
    }
  }
  backtracking(0, 0);
  return res;
};
// @lc code=end

上次更新于: