首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >[LeetCode] 216. Combination Sum III

[LeetCode] 216. Combination Sum III

作者头像
用户1148830
发布2018-01-03 17:45:11
发布2018-01-03 17:45:11
7200
举报

【原题】

Find all possible combinations of k numbers that add up to a number n, given that only numbers from 1 to 9 can be used and each combination should be a unique set of numbers.

Example 1:

Input: k = 3, n = 7

Output:

代码语言:javascript
复制
[[1,2,4]]

Example 2:

Input: k = 3, n = 9

Output:

代码语言:javascript
复制
[[1,2,6], [1,3,5], [2,3,4]]

【解释】 不同于Combination Sum和Combination Sum II,这里没有给定候选集合,而是使用数字1-9作为候选元素,并且要求指定结果集合的元素个数。统一元素在一个结果集合当中不能重复使用 【思路】 基本和Combination Sum II思想一样,只不过最后找到了和为target时,要判断其元素的个数是否与题目要求一样。

代码语言:javascript
复制
public class Solution {
   public void scombinationSum3Core(List<List<Integer>> results, List<Integer> result,int level,int k,int n,int sum){
        if(sum==n&&result.size()==k) {//判断元素个数和sum是否满足要求
            results.add(new ArrayList<Integer>(result));
            return;
        }
        if(result.size()==k) return;
        for(int i=level;i<10;i++){
            result.add(i);
            sum+=i;
            scombinationSum3Core(results,result,i+1,k,n,sum);
            sum-=i;
            //System.out.println(result);
            result.remove(result.size()-1);

        }
    }
    public List<List<Integer>> combinationSum3(int k, int n) {
        List<List<Integer>> results=new ArrayList<List<Integer>>();
        List<Integer> result=new ArrayList<>();
        scombinationSum3Core(results,result,1,k,n,0);
        return results;
    }

}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年06月26日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档