- 题目
找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。
- 示例
输入: k = 3, n = 9
输出: [[1,2,6], [1,3,5], [2,3,4]]
- 代码
class Solution {
List<List<Integer>> res = new ArrayList<>();
List<Integer> cur = new ArrayList<>();
public void dfs(int k, int n, int index, int sum) {
if (cur.size() == k) {
if (sum == n) {
res.add(new ArrayList<>(cur));
}
return;
}
for (int i = index; i <= 9; i++) {
if (sum + i > n) {
continue;
}
sum += i;
cur.add(i);
dfs(k,n,i+1,sum);
sum -= i;
cur.remove(cur.size() - 1);
}
}
public List<List<Integer>> combinationSum3(int k, int n) {
dfs(k,n,1,0);
return res;
}
}