leetcode - 39 -组合总和 - 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]
]

代码

/*
 * @lc app=leetcode.cn id=39 lang=java
 *
 * [39] 组合总和
 */

// @lc code=start
class Solution {
    //完全背包问题?
    //但是需要去重复选取,因此使用dfs.
    public List>t=new LinkedList<>();
    void dfs(int sum,int idx,int[] candidates,int target,LinkedListarr){
        if(sum==target){
            t.add(new ArrayList<>(arr));
            return;
        }
        if(sum>target){return;}
        for(int i=idx;i> combinationSum(int[] candidates, int target) {
        if(candidates.length==0){return t;}
        int n=candidates.length;
        LinkedListarr=new LinkedList<>();
        dfs(0,0,candidates,target,arr);
        return t;
    }
}
// @lc code=end


你可能感兴趣的:(leetcode刷题)