zoukankan      html  css  js  c++  java
  • LeetCode40.组合总和|| JavaScript

    给定一个数组 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()
                }
            }
        }
    };
  • 相关阅读:
    C#语言 循环语句
    C#语言基础语句
    抛出异常不会终止程序:
    Giew与checkBox的结合
    js去掉空格
    转:label标签的特殊用法
    LINQ Operators之过滤(Filtering)
    转:设置session过期时间
    转:Bat命令学习
    收藏:锁(待阅)
  • 原文地址:https://www.cnblogs.com/lhh520/p/10392765.html
Copyright © 2011-2022 走看看