• 组合总和II


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

    candidates 中的每个数字在每个组合中只能使用一次。

    说明:

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

    输入: candidates = [10,1,2,7,6,1,5], target = 8,
    所求解集为:
    [
    [1, 7],
    [1, 2, 5],
    [2, 6],
    [1, 1, 6]
    ]
    示例 2:

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

    解答:

    class Solution {
        private List<List<Integer>> res=new ArrayList<>();
        private int length;
        private int[] candidates;
        public List<List<Integer>> combinationSum2(int[] candidates,int target){
            if(candidates==null||candidates.length==0){
                return res;
            }
            Arrays.sort(candidates);
            this.length=candidates.length;
            this.candidates=candidates;
            getCombination(target,0,new Stack<>());
            return res;
        }
    
        public void getCombination(int residuse, int start, Stack<Integer> stack){
            if(residuse<0){
                return ;
            }
            if(residuse==0){
                List<Integer> r=new ArrayList<>(stack);
                res.add(r); 
                return;
            }
            for(int i=start;i<length&&residuse-candidates[i]>=0;i++){
                if(i>start&&candidates[i]==candidates[i-1]){
                    continue;
                }
                stack.add(candidates[i]);
                getCombination(residuse-candidates[i],i+1,stack);
                stack.pop();
            }
        }
    }
    View Code

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

  • 相关阅读:
    easyui的treegrid实现树型向上汇总功能
    webwork使用ajax传递实体类数据
    通过shape-outside来设置文字环绕时的形状
    CSS隐藏元素的N种实现方式。
    让文字飞一会~~~
    CSS技能汇总,研究及实践
    纯CSS实现JS效果研究
    移动端BUG汇总
    CSS3妙用
    利用border属性制作各种图形。
  • 原文地址:https://www.cnblogs.com/wuyouwei/p/11954325.html
Copyright © 2020-2023  润新知