LeetCode39.组合总和 JavaScript

2019-02-18  本文已影响3人  LHH大翰仔仔

给定一个无重复元素的数组 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]]

答案参考:

/**
 * @param {number[]} candidates
 * @param {number} target
 * @return {number[][]}
 */
var combinationSum = function(candidates, target) {
    var item=[],path=[];
    no_repetition(candidates,target,0,item,path);
    function no_repetition(candidates,target,it,item,path){
        if(target<0)
            return;
        if(target==0){
            path=path.slice()
            item.push(path);
            return
        }
        for(var i=it;i<candidates.length;i++){
            path.push(candidates[i]);
            no_repetition(candidates,target-candidates[i],i,item,path)
            path.pop()
        }
    }    
    return item
};
欢迎关注
上一篇下一篇

猜你喜欢

热点阅读