美文网首页
LeetCode40.组合总和|| JavaScript

LeetCode40.组合总和|| JavaScript

作者: LHH大翰仔仔 | 来源:发表于2019-02-18 11:37 被阅读4次

    给定一个数组 candidates和一个目标数target ,找出 candidates 中所有可以使数字和为target的组合。

    candidates中的每个数字在每个组合中只能使用一次。

    说明:

    所有数字(包括目标数)都是正整数。
    解集不能包含重复的组合。

    示例 1:

    输入: candidates = [10,1,2,7,6,1,5], target = 8,
    所求解集为:
    [[1, 7],[1, 2, 5],[2, 6],[1, 1, 6]]

    示例 2:

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

    答案参考:

    /**
     * @param {number[]} candidates
     * @param {number} target
     * @return {number[][]}
     */
    var combinationSum2 = function(candidates, target) {
        
        var item=[],path=[];
        candidates=candidates.sort(function(a,b){return a-b})
        GG(candidates,target,target,item,path,0)
        return item
        function GG(candidates,target,remain,item,path,start){
            if(remain<0)
                return;
            if(remain==0){
                 path=path.slice()    
                 item.push(path);
            }
            else{
                for(var i=start;i<candidates.length;i++){
                    if(i>start&&candidates[i]==candidates[i-1])
                        continue;
                    path.push(candidates[i])
                    GG(candidates,target,remain-candidates[i],item,path,i+1)
                    path.pop()
                }
            }
        }
    };
    
    欢迎关注

    相关文章

      网友评论

          本文标题:LeetCode40.组合总和|| JavaScript

          本文链接:https://www.haomeiwen.com/subject/ijqaeqtx.html