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

相关推荐
Hello.Reader4 小时前
Rust 并发编程:使用消息传递进行线程间数据共享
c++·算法·rust
大脑经常闹风暴@小猿4 小时前
leetcode 题目解析 第3题 无重复字符的最长子串
linux·算法·leetcode
bee-y6 小时前
力扣hot100刷题——11~20
算法·leetcode
Smile灬凉城6667 小时前
排序算法适合的场景
算法
奋进小青7 小时前
机器学习——需求预测+PCA+随机森林算法+shap可解释性分析+多模型性能对比
算法·随机森林·机器学习
悄悄敲敲敲8 小时前
C++:dfs,bfs各两则
算法·深度优先
88号技师8 小时前
2025年2月最新SCI-中华穿山甲优化算法Chinese Pangolin Optimizer-附Matlab免费代码
开发语言·算法·matlab·优化算法
Vacant Seat8 小时前
矩阵-旋转图像
java·数据结构·算法·矩阵
柃歌8 小时前
【UCB CS 61B SP24】Lecture 14 - Data Structures 1: Disjoint Sets学习笔记
java·数据结构·笔记·学习·算法
念九_ysl8 小时前
前端排序算法完全指南:从理论到实践
开发语言·javascript·算法·ecmascript