Leetcode 216. Combination Sum III

在这里插入图片描述
方法1: 这题是40题的变种,方法和40题一模一,recursion,backtracking。

class Solution {
    public List<List<Integer>> combinationSum3(int k, int n) {
        List<List<Integer>> res = new ArrayList<>();
        List<Integer> path = new ArrayList<>();
        dfs(1, k, n, path, res);
        return res;
    }
    
    public void dfs(int curr, int k, int n, List<Integer> path, List<List<Integer>> res){
        if(k == 0 && n == 0){
            res.add(new ArrayList(path));
            return;
        } 
        if((k == 0 && n != 0) || (k != 0 && n == 0)){
            return;
        }
        
        for (int i = curr; i <= 9; i++){
            path.add(path.size(), i);
            dfs(i+1, k-1, n-i, path, res);
            path.remove(path.size()-1);
        }
    }
}

总结:

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 终极编程指南 设计师:CSDN官方博客 返回首页