216. Combination Sum III
Description
Find all valid combinations of k
numbers that sum up to n
such that the following conditions are true:
Only numbers
1
through9
are used.Each number is used at most once.
Return a list of all possible valid combinations. The list must not contain the same combination twice, and the combinations may be returned in any order.
Constraints
2 <= k <= 9
1 <= n <= 60
Approach
Links
GeeksforGeeks
YouTube
Examples
Input: k = 3, n = 7
Output: [[1, 2, 4]]
Explanation:
1 + 2 + 4 = 7
There are no other valid combinations.
Solutions
/**
* Time complexity :
* Space complexity :
*/
class Solution {
public List<List<Integer>> combinationSum3(int k, int n) {
List<List<Integer>> resultList = new ArrayList();
helper(n, k, resultList, new LinkedList<Integer>(), 0, 1);
return resultList;
}
private void helper(int n,
int k,
List<List<Integer>> resultList,
LinkedList<Integer> currList,
int sum,
int start) {
if(currList.size() == k && sum == n) {
resultList.add(new ArrayList(currList));
return;
}
if(currList.size() < k) {
for(int j = start; j <= 9; j++) {
currList.add(j);
helper(n, k, resultList, currList, sum+j, j+1);
currList.removeLast();
}
}
}
}
Follow up
Last updated
Was this helpful?