前言
0x1 题目详情
0x2 解题思路
0x3 代码实现
class Solution {
public List<List<Integer>> combinationSum3(int k, int n) {
List<List<Integer>> result=new ArrayList<>();
if(n<0){
return result;
}
if(k<1){
return result;
}
recur(n,1,k,result,new ArrayList<Integer>());
return result;
}
private void recur(int target,int index,int k,List<List<Integer>> result,List<Integer> curResult){
if(target==0&& k==0){
result.add(new ArrayList<Integer>(curResult));
return;
}
//如果k<=0时,直接返回,因为已经不满组k个数的要求了
if(k<=0){
return;
}
for(int i=index;i<10;i++){
//进行与第39题相同条件的剪枝
if(target<i){
return;
}
curResult.add(i);
//因为一个元素只能选择一次
recur(target-i,i+1,k-1,result,curResult);
curResult.remove(curResult.size()-1);
}
}
}0x4 课后总结
Last updated