题目描述


java代码
class Solution {
public List<List<Integer>> combinationSum(int[] candidates, int target) {
List<List<Integer>> res=new ArrayList<>();
Arrays.sort(candidates);
backtracking(res,new ArrayList<>(),candidates,target,0);
return res;
}
public void backtracking(List<List<Integer>> res,List<Integer> tmp,int[] candidates,int target,int start){
if(target==0){
res.add(new ArrayList<>(tmp));
}
for(int i=start;i<candidates.length&&candidates[i]<=target;i++){
tmp.add(candidates[i]);
backtracking(res,tmp,candidates,target-candidates[i],i);
tmp.remove(tmp.size()-1);
}
}
}

本文深入探讨了组合总和算法的实现,通过递归回溯的方法寻找所有可能的数组合,使得这些数的和等于目标值。代码示例使用Java语言,展示了如何利用回溯法解决组合总和问题。
1030

被折叠的 条评论
为什么被折叠?



