39. 组合总和 - 力扣(LeetCode)
一:Java
- class Solution {
- List<List<Integer>> ans=new LinkedList<>();
- List<Integer> temp=new LinkedList<>();
- int sum=0;
- public List<List<Integer>> combinationSum(int[] candidates, int target) {
- df(candidates, target, 0);
- return ans;
- }
- public void df(int[] candidates, int target,int start){
- if(sum>target) return ;
- if(sum==target){
- ans.add(new LinkedList<>(temp));
- return ;
- }
- for (int i = start; i < candidates.length; i++) {
- temp.add(candidates[i]);
- sum+=candidates[i];
- df(candidates, target, i);
- sum-=candidates[i];
- temp.removeLast();
- }
- }
- }
复制代码 为什么删去:if(sum>target) return ; 语句,会报错 -- 栈溢出
由于递归是i开始,而非i+1,假如没有这个 if(sum>target) return 语句,达不到sum==target的条件,会不停在i处累加,末了不停递归没有竣事。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |