树枝无重复,树层也无重复。
class Solution {
public List<List<Integer>> res = new ArrayList<>();
public List<Integer> path = new ArrayList<>();
public int sum = 0;
public List<List<Integer>> combinationSum3(int k, int n) {
backTracking(k, n, 1);
return res;
}//注!!组合需要有startIdx
public void backTracking(int k, int n, int startIdx) {
if (sum > n) {
return ;
}
else if (path.size() == k && sum == n) {
res.add(new ArrayList<Integer>(path));
return ;
}
for (int i = startIdx; i <= 9; i++) {
sum += i;
path.add(i);
backTracking(k, n, i + 1);
path.remove(path.size() - 1);
sum -= i;
}
}
}