zoukankan      html  css  js  c++  java
  • 组合总和


    class Solution {
        List<List<Integer>> res = new ArrayList<>();
        List<Integer> list = new LinkedList<>();
        public List<List<Integer>> combinationSum(int[] candidates, int target) {
            dfs(target,candidates,0,0);
            return res;
        }
    
        public void dfs(int target,int[] candidates,int cur,int start){
            if(cur > target ) return;
            if(cur == target){
                res.add(new ArrayList<>(list));
                return;
            }
            for(int i=start;i<candidates.length;i++){//从start开始
                list.add(candidates[i]);
                dfs(target,candidates,cur+candidates[i],i);//这里是i不是i+1
                list.remove(list.size()-1);
            }
        }
    }
    
    


    
    class Solution {
        List<List<Integer>> res = new ArrayList<>();
        List<Integer> list = new LinkedList<>();
        public List<List<Integer>> combinationSum2(int[] candidates, int target) {
            Arrays.sort(candidates);
            dfs(target,candidates,0,0);
            return res;
        }
    
        public void dfs(int target,int[] candidates,int cur,int start){
            if(cur > target) return;
            if(cur == target){
                res.add(new ArrayList(list));
                return;
            }
            for(int i=start;i<candidates.length;i++){//从start开始
               if(i!=start && candidates[i] == candidates[i-1]) continue;//去重
                list.add(candidates[i]);
                dfs(target,candidates,cur+candidates[i],i+1);//i+1不重复取
                list.remove(list.size()-1);
            }
        }
    
    
    }
    
    
  • 相关阅读:
    数列分段
    2020-01-21 数组 最大子序和
    2020-01-21 数组
    补 2020-01-20 数组 删除排序数组中的重复项
    补2020-01-19 数组 两数之和
    2020-01-18 刷题 螺旋矩阵 II
    2020-01-16 刷题 长度最小的子数组
    2020-01-15 刷题 移除元素
    2020-01-14 QT学习记录
    2020-01-14 数组刷题-1
  • 原文地址:https://www.cnblogs.com/cstdio1/p/13644015.html
Copyright © 2011-2022 走看看