美文网首页
Leetcode 精选之搜索(组合总和)

Leetcode 精选之搜索(组合总和)

作者: Kevin_小飞象 | 来源:发表于2020-04-03 14:45 被阅读0次

题目描述

给定一个无重复元素的数组 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]
]

题目链接:力扣

解题思路

class Solution {
    public List<List<Integer>> combinationSum(int[] candidates, int target) {
        List<List<Integer>> combinations = new ArrayList<>();
        backtracking(new ArrayList<>(), combinations, 0, target, candidates);
        return combinations;
    }

    private void backtracking(List<Integer> tempCombination, List<List<Integer>>                        combinations,int start, int target, final int[] candidates) {

        if (target == 0) {
            combinations.add(new ArrayList<>(tempCombination));
            return;
        }
        for (int i = start; i < candidates.length; i++) {
            if (candidates[i] <= target) {
                tempCombination.add(candidates[i]);
                backtracking(tempCombination, combinations, i, target - candidates[i],                                      candidates);
                tempCombination.remove(tempCombination.size() - 1);
            }
        }
    }
}

测试结果

image.png

相关文章

网友评论

      本文标题:Leetcode 精选之搜索(组合总和)

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