216. Combination Sum III

栏目: Java · 发布时间: 6年前

内容简介: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.Note:All numbers will be positive integers.

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.

Note:

All numbers will be positive integers.

The solution set must not contain duplicate combinations.

Example 1:

Input: k = 3, n = 7
Output: [[1,2,4]]

Example 2:

Input: k = 3, n = 9
Output: [[1,2,6], [1,3,5], [2,3,4]]

难度:medium

题目:找出所有可能的K个数之和为n的组合,只可以使用1到9之间的数。

注意:所有数都为正,给出的答案中不包含重复的数。

思路:递归

Runtime: 1 ms, faster than 66.65% of Java online submissions for Combination Sum III.

Memory Usage: 35 MB, less than 54.02% of Java online submissions for Combination Sum III.

class Solution {
    public List<List<Integer>> combinationSum3(int k, int n) {
        List<List<Integer>> result = new ArrayList<>();
        if (n > 45 || n < 1 || k < 1 || k > 9) {
            return result;
        }
        
        combination(1, k, 0, n, new Stack<>(), result);
        
        return result;
    }
    
    private void combination(int begin, int k, int sum, int n,
                             Stack<Integer> stack, List<List<Integer>> result) {
        if (k < 0 || sum > n) {
            return;
        }
        if (0 == k && sum == n) {
            result.add(new ArrayList<>(stack));
            return;
        }
        
        for (int i = begin; i <= 9 - k + 1; i++) {
            stack.push(i);
            combination(i + 1, k - 1, sum + i, n, stack, result);
            stack.pop();
        }
    }
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web全栈工程师的自我修养

Web全栈工程师的自我修养

余果 / 人民邮电出版社 / 2015-9-1 / 49.00

全栈工程师正成为 IT 行业的新秀,论是上市互联网公司还是创业公司,都对全栈工程师青睐有加。本书作者是腾讯公司高级工程师,在前端、后端和APP开发方面都有丰富的经验,在本书中分享了全栈工程师的技能要求、核心竞争力、未来发展方向、对移动端的思考。除此之外,本书还详细记录了作者从零开始、学习成长的心路历程。 本书内容全面,客观务实,适合互联网行业新人、程序员,以及期待技术转型的从业者阅读参考。一起来看看 《Web全栈工程师的自我修养》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

MD5 加密
MD5 加密

MD5 加密工具

html转js在线工具
html转js在线工具

html转js在线工具