• 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);
            }
        }
    }
  • 相关阅读:
    使 Asp.net Core Hosting Bundle 立即生效
    Hosted Services require keep alive
    VS 高级保存选项,解决文件内容编码问题
    asp.net core localhost https 证书
    阿里云K8S下玩.NET CORE 3.1
    cmd 域名生效检测
    c# 通过win32 api 得到指定Console application Content
    .net framework msbuild环境搭建 (不装vs)
    Python常用模块——目录
    Python——爬虫进阶
  • 原文地址:https://www.cnblogs.com/asuran/p/7584720.html
Copyright © 2020-2023  润新知