class Solution {
List<List<Integer>> res = new ArrayList<>();
LinkedList<Integer> arr = new LinkedList<>();
public List<List<Integer>> combinationSum3(int k, int n) {
findsum(k,n,1,0,0);
return res;
}
public void findsum(int k, int n,int start,int num,int sum){
if(num == k || sum == n){
if(sum != n || num != k) return;
else res.add(new ArrayList<>(arr));
}
for(int i = start;i <= 9;i++){
sum += i;
//剪枝操作,如果sum>n || num + 1 > k直接跳出循环
if(num + 1 > k || sum > n) break;
arr.addLast(i);
findsum(k, n, i + 1, num + 1, sum);
sum -= i;
arr.removeLast();
}
}
}
活学活用,顺便剪个枝