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);
            }
        }
    }
  • 相关阅读:
    pycharm快捷键
    Docker
    Go语言与Elasticsearch
    Celery与APScheduler
    爬虫入门到入狱
    数据分析
    后台管理
    Linux基础与自动化运维
    微信小程序
    Git
  • 原文地址:https://www.cnblogs.com/asuran/p/7584720.html
Copyright © 2011-2022 走看看