Open Code Review:打破流程阻塞,构建开放高效的代码评审机制
2026/10/19 5:11:21
// 保存最终结果List<List<Integer>>res=newArrayList<>();// 保存当前路径List<Integer>curPath=newArrayList<>();publicList<List<Integer>>combinationSum3(intk,intn){// 如果k大于n,直接返回空列表if(k>n){returnres;}// 回溯backtrack(1,0,k,n);returnres;}publicvoidbacktrack(intstart,intcurSum,intk,inttargetSum){// 如果当前和等于目标值,且长度为k,加入结果if(curSum==targetSum&&curPath.size()==k){res.add(newArrayList<>(curPath));return;}// 剪枝1:如果当前和大于目标值,直接返回if(curSum>targetSum){return;}// 剪枝2:如果当前路径长度加上可选的最大数还小于k,直接返回intremainCount=k-curPath.size();intremainNum=9-start+1;if(remainCount>remainNum){return;}// 开始遍历for(inti=start;i<=9;i++){// 选择curPath.add(i);curSum+=i;backtrack(i+1,curSum,k,targetSum);// 回溯curSum-=i;curPath.remove(curPath.size()-1);}}