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

    class Solution {
        public List<List<Integer>> combinationSum2(int[] candidates, int target) {
            List<List<Integer>> ret=new ArrayList<List<Integer>>();
            Arrays.sort(candidates);
            boolean[] used=new boolean[candidates.length];
            generateCombination(new ArrayList<Integer>(), 0, target, used, ret, candidates);
            return ret;
        }
        private void generateCombination(List<Integer> list, int idx, int target, boolean[] used, List<List<Integer>> combs, int[] candidates){
            if(target==0)
            {
                combs.add(new ArrayList<Integer>(list));
                return;
            }
            if(idx>=candidates.length||target<0)
                return;
            generateCombination(list, idx+1, target, used, combs, candidates);
            if(idx>0&&used[idx-1]==false&&candidates[idx-1]==candidates[idx])
                return;
            list.add(candidates[idx]);
            used[idx]=true;
            generateCombination(list, idx+1, target-candidates[idx], used, combs, candidates);
            list.remove(list.size()-1);
            used[idx]=false;
        }
    }
    class Solution {
        public List<List<Integer>> combinationSum2(int[] candidates, int target) {
            List<List<Integer>> combs=new ArrayList<List<Integer>>();
            Arrays.sort(candidates);
            generateCombination(new ArrayList<Integer>(), 0, target, combs, candidates);
            return combs;
        }
        private void generateCombination(List<Integer> list, int idx, int target, List<List<Integer>> combs, int[] candidates){
            if(target==0)
            {
                combs.add(new ArrayList<Integer>(list));
                return;
            }
            if(idx>=candidates.length||target<0)
                return;
            for(int i=idx;i<candidates.length;i++)
            {
                if(i>idx&&candidates[i]==candidates[i-1])
                    continue;
                list.add(candidates[i]);
                generateCombination(list, i+1, target-candidates[i], combs, candidates);
                list.remove(list.size()-1);
            }
        }
    }
  • 相关阅读:
    TTL电平和CMOS电平总结
    掩码
    关于Autosar中DCM(14229UDS)模块的理解
    Diagnostic Trouble Code诊断故障码
    eclipse搭建android开发环境
    在ubuntu下安装zookeeper
    redis的windows版本下载地址及windows的客户端工具
    最简单的启动并连接一个redis的docker容器
    转:Redis介绍及常用命令大全
    redis常用命令
  • 原文地址:https://www.cnblogs.com/asuran/p/7584720.html
Copyright © 2011-2022 走看看