ToB企服应用市场:ToB评测及商务社交产业平台

标题: 2.25力扣-回溯组合总和 [打印本页]

作者: 十念    时间: 昨天 02:53
标题: 2.25力扣-回溯组合总和

39. 组合总和 - 力扣(LeetCode)
一:Java

  1. class Solution {
  2.     List<List<Integer>> ans=new LinkedList<>();
  3.     List<Integer> temp=new LinkedList<>();
  4.     int sum=0;
  5.     public List<List<Integer>> combinationSum(int[] candidates, int target) {
  6.         df(candidates, target, 0);
  7.         return ans;
  8.     }
  9.     public void df(int[] candidates, int target,int start){
  10.         if(sum>target) return ;
  11.         if(sum==target){
  12.             ans.add(new LinkedList<>(temp));
  13.             return ;
  14.         }
  15.         for (int i = start; i < candidates.length; i++) {
  16.             temp.add(candidates[i]);
  17.             sum+=candidates[i];
  18.             df(candidates, target, i);
  19.             sum-=candidates[i];
  20.             temp.removeLast();
  21.         }
  22.     }
  23. }
复制代码
为什么删去:if(sum>target) return ; 语句,会报错  --  栈溢出


由于递归是i开始,而非i+1,假如没有这个 if(sum>target) return 语句,达不到sum==target的条件,会不停在i处累加,末了不停递归没有竣事。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4