• Java实现 LeetCode 40 组合总和 II(二)


    40. 组合总和 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]
    ]

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/combination-sum-ii
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    PS:就是比上一个多一个不重复用

    class Solution {
        public List<List<Integer>> combinationSum2(int[] candidates, int target) {
            List<List<Integer>> res = new ArrayList<>();
            Arrays.sort(candidates);
            backtrack(candidates, 0, target, res, new ArrayList<Integer>());
            return res;
        }
        private void backtrack(int [] candidates, int start, int target, List<List<Integer>> res, ArrayList<Integer> tmp) {
            if (target == 0) {
                res.add(new ArrayList(tmp));
                return;
            }
            for (int i = start; i < candidates.length; i ++) {
                if (i > start && candidates[i] == candidates[i-1]) continue;
                if (target - candidates[i] >= 0) {
                    tmp.add(candidates[i]);
                    backtrack(candidates, i + 1, target - candidates[i], res, tmp);
                    tmp.remove(tmp.size() - 1);
                } else {
                    break;
                }
            }
        }
    }
    
  • 相关阅读:
    获取文字宽高
    jni中的参数含义
    jni开发中的常见错误
    指针只需要记住一点
    Eclipse web项目引用其它项目时的部署问题
    关于JAVA日志
    去掉Mybatis Generator生成的一堆 example
    怎样给Eclipse添加一个Xml模板
    Junit很少出现的一个问题 No tests found matching ...
    出现异常:Unsupported major.minor version
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12946885.html
Copyright © 2020-2023  润新知