LeetCode39.组合总和 JavaScript

给定一个无重复元素的数组 candidates和一个目标数 target ,找出 candidates中全部可使数字和为target的组合。javascript

candidates中的数字能够无限制重复被选取。java

说明:数组

全部数字(包括 target)都是正整数。 解集不能包含重复的组合。spa

示例 1:code

输入: candidates = [2,3,6,7], target = 7, 所求解集为: [[7],[2,2,3]]cdn

示例 2:ip

输入: candidates = [2,3,5], target = 8, 所求解集为: [[2,2,2,2],[2,3,3],[3,5]]get

答案参考:it

/** * @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
};
复制代码

相关文章
相关标签/搜索