zoukankan      html  css  js  c++  java
  • 40. Combination Sum II(js)

    40. Combination Sum II

    Given a collection of candidate numbers (candidates) and a target number (target), find all unique combinations in candidates where the candidate numbers sums to target.

    Each number in candidates may only be used once in the combination.

    Note:

    • All numbers (including target) will be positive integers.
    • The solution set must not contain duplicate combinations.

    Example 1:

    Input: candidates = [10,1,2,7,6,1,5], target = 8,
    A solution set is:
    [
      [1, 7],
      [1, 2, 5],
      [2, 6],
      [1, 1, 6]
    ]
    

    Example 2:

    Input: candidates = [2,5,2,1,2], target = 5,
    A solution set is:
    [
      [1,2,2],
      [5]
    ]
    题意:获取所有的排列组合,使得所有项加起来等于target,可选项不能重复,结果不能重复
    代码如下:
    /**
     * @param {number[]} candidates
     * @param {number} target
     * @return {number[][]}
     */
    var combinationSum2 = function(candidates, target) {
        var res={};
        var curr=[];
        candidates.sort((a,b)=>a-b);
        backTrack(res,curr,candidates,target,0);
        return Object.values(res);
    };
    function backTrack(res,curr,candidates,target,start){
    
        if(target>0){
            for(var i=start;i<candidates.length && target>=candidates[i];i++){
                curr.push(candidates[i]);
                backTrack(res,curr,candidates,target-candidates[i],i+1);
                curr.pop();
            }
        }else if(target==0){
            let str=curr.join('')
            res[str]=[...curr];
        }
    }
  • 相关阅读:
    java模式及其应用场景
    redis配置密码 redis常用命令
    Redis可视化工具Redis Desktop Manager使用
    String类和StringBuffer类的区别
    centos下搭建redis集群
    eclipse maven项目中使用tomcat插件部署项目
    什么是反向代理,如何区别反向与正向代理
    数据库连接池的原理
    归并排序
    asio-kcp源码分析
  • 原文地址:https://www.cnblogs.com/xingguozhiming/p/10415637.html
Copyright © 2011-2022 走看看