[LeetCode] 216. 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.

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

Thought process:
DFS + backtracking.

Solution:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
    public List<List<Integer>> combinationSum3(int k, int n) {
        List<List<Integer>> combinations = new ArrayList<>();
        combinationSum3(k, n, 1, new ArrayList<>(), combinations);
        return combinations;
    }
    
    private void combinationSum3(int k, int n, int start, List<Integer> combination, List<List<Integer>> combinations) {
        if (combination.size() == k) {
            if (n == 0) {
                combinations.add(new ArrayList<>(combination));
            }
            return;
        }
        
        for (int i = start; i <= 9; i++) {
            combination.add(i);
            combinationSum3(k, n - i, i + 1, combination, combinations);
            combination.remove(combination.size() - 1);
        }
    }
}

Time complexity: O(9 choose k).

Comments

Popular posts from this blog

[LeetCode] 714. Best Time to Buy and Sell Stock with Transaction Fee

[LeetCode] 269. Alien Dictionary

[LeetCode] 631. Design Excel Sum Formula