`

Combination Sum III

阅读更多
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.

Ensure that numbers within the set are sorted in ascending order.


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]]

找出所有可能的组合,使组合中元素的个数等于k, 元素的和等于n。我们采用回溯法,当元素的个数为k并且和为9的时候我们记录这个结果,然后回溯,继续寻找其他可能的结果。代码如下:
public class Solution {
    public List<List<Integer>> combinationSum3(int k, int n) {
        LinkedList<Integer> list = new LinkedList<Integer>();
        List<List<Integer>> result = new ArrayList<List<Integer>>();
        getCombinations(1, k, n, list, result);
        return result;
    }
    
    public void getCombinations(int start, int k, int n, LinkedList<Integer> list, List<List<Integer>> llist) {
        if(list.size() == k && n == 0) {
            llist.add(new LinkedList<Integer>(list));
        }
        for(int i = start; i <= 9; i++) {
            if(list.size() < k) {
                list.add(i);
                getCombinations(i + 1, k, n - i, list, llist);
                list.removeLast();
            }
        }
    }
}
0
1
分享到:
评论

相关推荐

    java-leetcode题解之Combination Sum III.java

    其中,“Combination Sum III”是其中的一道典型的回溯算法题。 “Combination Sum III”题目要求给定一个范围,找出所有相加之和为特定值的k个数的组合。在这个问题中,所有数字必须是唯一的,且数字范围限制在1到...

    python-leetcode题解之216-Combination-Sum-III.py

    特别是算法题目,如216题——Combination Sum III,对于锻炼编程者的算法思维和代码实现能力有着重要作用。 Combination Sum III这道题目要求解的是找出所有和为特定值的组合,其中每个数字仅能使用一次,这些数字...

    Coding Interview In Java

    leetcode Java 246 題目及...240 Combination Sum III 581 241 Combinations 583 242 Letter Combinations of a Phone Number 587 243 Restore IP Addresses 589 244 Reverse Integer 591 245 Palindrome Number 593

    java-leetcode题解之Combination Sum.java

    在这个Java代码中,我们首先定义了一个名为`Solution`的类,并在其中定义了一个名为`combinationSum`的方法。该方法接收两个参数:一个整数数组`candidates`和一个整数`target`。`candidates`数组中的元素可以无限次...

    java-leetcode题解之Combination Sum II.java

    虽然问题表面上看起来和Combination Sum I类似,但Combination Sum II由于限制了数字的使用次数,使得问题复杂度有所提高。 在解决Combination Sum II时,首先需要对数组进行排序,排序的目的是为了在后续的递归...

    手稿_V1.088

    代码首先定义了一个名为`Solution`的类,其中有两个方法:`bit1Count`和`combinationSum3`。`bit1Count`方法用于计算一个无符号整数中二进制形式的1的个数,而`combinationSum3`是解决该问题的主要方法。 在`bit1...

    java-leetcode题解之Combination Sum IV.java

    public int combinationSum4(int[] nums, int target) { int[] dp = new int[target + 1]; dp[0] = 1; for (int i = 1; i ; i++) { for (int num : nums) { if (i &gt;= num) { dp[i] += dp[i - num]; } } } ...

    js-leetcode题解之39-combination-sum.js

    在JavaScript编程中,解决算法...function combinationSum(candidates, target) { let result = []; let combination = []; // 递归函数,用于回溯搜索 function backtrack(remain, combo, start) { if (remain

    java-leetcode题解之039-Combination-Sum

    java入门 java_leetcode题解之039_Combination_Sum

    C语言-leetcode题解之39-combination-sum.c

    LeetCode题解之39-Combination Sum是一个典型的C语言算法问题,主要考察候选者对回溯算法的理解和实现能力。该问题的具体内容是找出所有相加之和为给定目标数target的组合,且每组中每个数字可以重复使用多次。解决...

    C语言-leetcode题解之40-combination-sum-ii.c

    文件标题"C语言-leetcode题解之40-combination-sum-ii.c"暗示了本文的内容是围绕LeetCode上的第40题"Combination Sum II"编写的题解,并且使用C语言来实现解决方案。第40题是组合总和问题的一个变种,要求在一组数字...

    js-leetcode题解之40-combination-sum-II.js

    首先,“js-leetcode题解之40-combination-sum-II.js”是一份JavaScript编程语言实现的LeetCode算法题解。LeetCode是一个在线编程平台,主要提供算法训练和面试准备题目,题目涵盖从初级到高级的不同难度级别。这道...

    python-leetcode面试题解之第216题组合总和III-题解.zip

    def combinationSum3(self, k: int, n: int, m: int, current_sum=0, current_combination=[], combinations=[]): if len(current_combination) == m and current_sum == k: combinations.append(current_...

    几百种Python 算法集合

    Combination Sum组合总和 Crossword Puzzle Solver 填字游戏求解器 Generate Parentheses 生成括号 Hamiltonian Cycle 哈密顿循环 Knight Tour骑士之旅 Match Word Pattern 匹配单词模式 Minimax极大 极小 N QueensN...

    组合总和(java代码).docx

    public static List&lt;List&lt;Integer&gt;&gt; combinationSum(int[] candidates, int target) { List&lt;List&lt;Integer&gt;&gt; result = new ArrayList(); List&lt;Integer&gt; combination = new ArrayList(); Arrays.sort(candidates);...

    c++-c++编程基础之leetcode题解第40题组合总和II.zip

    在主函数`combinationSum2`中,我们先对输入的`candidates`进行排序,然后调用`backtrack`函数开始搜索过程。最终返回的结果集`res`包含了所有满足条件的组合。 通过以上代码,我们可以解决LeetCode第40题...

    leetcode怎么销号-LeetCode-Solutions:我自己的LeetCode解决方案

    Combination Sum Medium 回溯 0040 Combination Sum II Medium 回溯 0046 Permutations Medium 回溯 0047 Permutations II Medium 递归、回溯 0051 N-Queens Hard 回溯 0053 Maximum Subarray Easy 动态规划 0069 ...

Global site tag (gtag.js) - Google Analytics