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

    给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。

    candidates 中的数字可以无限制重复被选取。

    说明:

    所有数字(包括 target)都是正整数。
    解集不能包含重复的组合。 
    示例 1:

    输入: candidates = [2,3,6,7], target = 7,
    所求解集为:
    [
    [7],
    [2,2,3]
    ]
    示例 2:

    输入: candidates = [2,3,5], target = 8,
    所求解集为:
    [
      [2,2,2,2],
      [2,3,3],
      [3,5]
    ]

    解答思路:

     

     

     解答代码:

    public List<List<Integer>> combinationSum(int[] candidates,int target){
            if(candidates.length>0) {
                Arrays.sort(candidates);
                this.length=candidates.length;
                this.candidates=candidates;
                findCombinationSum(target,0,new Stack<Integer>());
            }
            return res;
        }
    
        private List<List<Integer>> res=new ArrayList<>();
    
        private Integer length;
    
        private int[] candidates;
    
        public void findCombinationSum(int residue,int start,Stack<Integer> stack){
            if(residue<0){
                return ;
            }
            if(residue==0){
                res.add(new ArrayList<>(stack));
                return;
            }
            for(int i=start;i<length&&residue-candidates[i]>=0;i++){
                stack.add(candidates[i]);
                findCombinationSum(residue-candidates[i],i,stack);
                stack.pop();
            }
        }
    View Code

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/combination-sum

  • 相关阅读:
    HDU4731+找规律
    Unable to open c
    珠宝
    allegro添加多个过孔
    STM32硬件复位时间
    Android 系统的四层结构
    AIDL与stub
    devfs,proc,udev
    cdev[典]
    Linux设备管理之权限倾斜——mem、proc、devfs、sysfs、udev(下)
  • 原文地址:https://www.cnblogs.com/wuyouwei/p/11946487.html
Copyright © 2011-2022 走看看