首页 > 其他 > 详细

Leetcode之回溯法专题-216. 组合总和 III(Combination Sum III)

时间:2019-08-10 09:54:43      阅读:73      评论:0      收藏:0      [点我收藏+]

Leetcode之回溯法专题-216. 组合总和 III(Combination Sum III)

同类题目:

Leetcode之回溯法专题-40. 组合总和 II(Combination Sum II)


 

 

找出所有相加之和为 的 个数的组合组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。

说明:

  • 所有数字都是正整数。
  • 解集不能包含重复的组合。 

示例 1:

输入: k = 3, n = 7
输出: [[1,2,4]]

示例 2:

输入: k = 3, n = 9
输出: [[1,2,6], [1,3,5], [2,3,4]]


分析:
是之前两题的升级版,之前两题的链接在文章的开头。

给定k和n,求1-9中,取k个数,让他们和为n。

同样的,用回溯法,分为取和不取两个分支,并在之中加上和的判断还有取的个数的判断。

class Solution {
    
    List<List<Integer>> ans = new ArrayList<>();
    public List<List<Integer>> combinationSum3(int k, int n) {
        if(k==0 || n==0) return ans;
        dfs(k,n,1,new ArrayList<Integer>(),0);
        return ans;
    }
    public void dfs(int k,int n,int step,ArrayList<Integer> list,int sum){
        if(list.size()==k && sum==n){
            ans.add(new ArrayList<>(list));
            return;
        }
        if(step>9) return;
        
        
        
        list.add(step);
        dfs(k,n,step+1,list,sum+step);
        list.remove(list.size()-1);
        dfs(k,n,step+1,list,sum);
    }
}

 

Leetcode之回溯法专题-216. 组合总和 III(Combination Sum III)

原文:https://www.cnblogs.com/qinyuguan/p/11330214.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!