[leetcode javascript解题]Combination Sum

leetcode第39题Combination Sum描述如下:

Given a set of candidate numbers (C) (without duplicates) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.
The same repeated number may be chosen from C unlimited number of times.
Note:
All numbers (including target) will be positive integers.
The solution set must not contain duplicate combinations.
For example, given candidate set [2, 3, 6, 7] and target 7,
A solution set is:
[
[7],
[2, 2, 3]
]

这个题目其实有点类似硬币找零问题,用递归法就能轻松解决
代码如下:

/**
 * @param {number[]} candidates
 * @param {number} target
 * @return {number[][]}
 */
var combinationSum = function(candidates, target) {
    var result=[],temp=[];
    var find =function(target,temp,index){
        for(var i=index;i>=0;i--){
           if(candidates[i]>target){
               continue;
           }else if(candidates[i]===target){
               result.push(temp.concat([candidates[i]]));
           }else{
               find(target-candidates[i],temp.concat([candidates[i]]),i); 
           }
       }
    }
    find(target,temp,candidates.length-1);
    return result;
};

你可能感兴趣的:(leetcode)