class Solution {
List<List<Integer>> result = new ArrayList<>();
LinkedList<Integer> path = new LinkedList<>();
public List<List<Integer>> combinationSum3(int k, int n) {
backtracking(n, 0, k, 1);
return result;
}
public void backtracking(int targetSum, int sum, int k, int startIndex){
if(path.size() == k){
if(sum == targetSum){
result.add(new ArrayList<>(path));
return;
}
return;
}
for(int i = startIndex; i<= 9 - (k-path.size()) + 1; i++){
sum += i;
path.add(i);
backtracking(targetSum, sum, k, i+1);
sum -= i;
path.removeLast();
}
}
}
记住剪枝操作:9 - (k-path.size()) + 1