2.25力扣-回溯组合总和

打印 上一主题 下一主题

主题 882|帖子 882|积分 2646


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企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

十念

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表