美文网首页
40.组合总和2

40.组合总和2

作者: _道友请留步_ | 来源:发表于2018-05-05 11:17 被阅读0次
class Solution {
    public List<List<Integer>> combinationSum2(int[] candidates, int target) {
        Arrays.sort(candidates);
        List<List<Integer>> lists = new ArrayList<>();
        if(candidates.length == 0){
            return lists;
        }
        if(target == candidates[candidates.length-1]){
            List<Integer> list = new ArrayList<>();
            list.add(target);
            lists.add(list);
            List<List<Integer>> sum = combinationSum2(Arrays.copyOfRange(candidates, 0, candidates.length-1), target);
            for(int i = 0; i < sum.size();i++){
                if(! lists.contains(sum.get(i))){
                    lists.add(sum.get(i));
                }
            }
            return lists;
        }
        if(target < candidates[candidates.length - 1]){
            return combinationSum2(Arrays.copyOfRange(candidates, 0, candidates.length-1), target);
        }
        List<List<Integer>> sum = combinationSum2(Arrays.copyOfRange(candidates, 0, candidates.length-1), target-candidates[candidates.length - 1]);
        for(int i = 0; i < sum.size(); i++){
            sum.get(i).add(candidates[candidates.length - 1]);
        }
        for(int i = 0; i < sum.size();i++){
            if(! lists.contains(sum.get(i))){
                lists.add(sum.get(i));
            }
        }
        sum = combinationSum2(Arrays.copyOfRange(candidates, 0, candidates.length-1), target);
        for(int i = 0; i < sum.size();i++){
            if(! lists.contains(sum.get(i))){
                lists.add(sum.get(i));
            }
        }
        return  lists;
    }
}

相关文章

  • 40.组合总和2

  • 40. 组合总和 II

    40. 组合总和 II(难度:中等) 题目链接:https://leetcode-cn.com/problems/...

  • 40. 组合总和 II

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

  • 40.组合总和II

    题目给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字...

  • 40.组合总和 II

    自己解法 标准的回溯加剪枝,思路很清晰,但是在细节上出了点小问题,一个是递归的时候应该用i+1,用成了start ...

  • 40. 组合总和 II

    题目描述 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以...

  • 40. 组合总和 II

    题目 40. 组合总和 II 给定一个数组 candidates 和一个目标数 target ,找出 candid...

  • 40. Combination Sum II 组合总和2

    题目 给定一个数组 candidates 和一个目标数 target。找到使数组中数相加等于 target 的所有...

  • backtracking——40. 组合总和 II

    这道题与39不一样的是,元素不能重复使用,但还是没有顺序的,所以自然而然想到的是每次把start+1就好了。 但这...

  • 40. leetcode题目讲解(Python): 组合总和 2

    题目如下: 解题思路: 这道题跟上一题(39题)非常类似,不同之处是这道题不允许重复使用candidates中的元...

网友评论

      本文标题:40.组合总和2

      本文链接:https://www.haomeiwen.com/subject/empsrftx.html