2.25力扣-回溯组合总和

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

一:Java

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处累加,最后一直递归没有结束。

相关推荐
JieE2121 天前
LeetCode 226. 翻转二叉树|JS 递归超详细拆解,二叉树入门经典题
javascript·算法
JieE2121 天前
LeetCode 104. 二叉树的最大深度|递归思路超详细拆解
javascript·算法
vivo互联网技术1 天前
CVPR 2026 | 全新强化学习框架 BeautyGRPO:重塑真实人像
算法·大模型·cvpr·影像
Darling噜啦啦1 天前
列表转树算法深度解析:从 Map 到 Reduce 的两种实现,面试高频考点
数据结构·算法·面试
用户497863050731 天前
(一)小红的数组操作
算法·编程语言
怕浪猫2 天前
Electron 系列文章封面图
算法·架构·前端框架
徐小夕2 天前
JitWord 3.0 正式发布,高精度Word异构解析+复杂组件兼容,打造web端协同Word编辑器
前端·vue.js·算法
通信小呆呆2 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人