LeetCode算法心得——路径总和||(dfs+双端队列+链表)

news2024/11/27 2:29:29

大家好,我是晴天学长,简单树的经典题目,是dfs的开端啊,需要的小伙伴可以关注支持一下哦!后续会继续更新的。


1) .路径总和||

在这里插入图片描述
给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。

叶子节点 是指没有子节点的节点。

示例 1:

输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22
输出:[[5,4,11,2],[5,8,4,5]]
示例 2:

输入:root = [1,2,3], targetSum = 5
输出:[]
示例 3:

输入:root = [1,2], targetSum = 0
输出:[]

提示:

树中节点总数在范围 [0, 5000] 内
-1000 <= Node.val <= 1000
-1000 <= targetSum <= 1000


2) .算法思路

路径总和:
1.用这个List<List> ret = new LinkedList<List>();
存答案
2. Deque path = new LinkedList();
双向队列 ,可以实现栈
3.dfs
4.空的话,返回空(单亲节点)
5.把数据放入栈
6.左右节点。
7.把元素弹出


3) .算法步骤

1.创建一个二维列表 list 用于存储所有路径和等于目标和的路径。
2.创建一个双端队列 queue 用于保存当前路径上的节点值。
3.定义 pathSum 方法,接受一个二叉树的根节点 root 和目标和 targetSum 作为参数,并返回结果列表 list。
4.在 dfs 方法中,首先判断当前节点 root 是否为空,如果为空则直接返回。
5.将当前节点的值加入到队列末尾,同时将目标和减去当前节点的值。
6.如果当前节点是叶子节点(即左右子节点均为空),并且目标和等于0,则将当前路径添加到结果列表 list 中。
7.递归调用 dfs 方法,分别遍历当前节点的左子节点和右子节点,并传递更新后的目标和。
8.回溯,将队列末尾的节点值移除,以便继续遍历其他路径。


4).代码示例

   class Solution {
        List<List<Integer>> list = new LinkedList<>();
        Deque<Integer> queue = new LinkedList<>();

        public List<List<Integer>> pathSum(TreeNode root, int targetSum) {
            dfs(root, targetSum);
            return list;
        }

        private void dfs(TreeNode root, int targetSum) {
            if (root == null) return;
            queue.offerLast(root.val);
            targetSum -= root.val;
            if (root.left == null && root.right == null && targetSum == 0) {
                list.add(new ArrayList<>(queue));
            }
            dfs(root.left, targetSum);
            dfs(root.right, targetSum);
            queue.pollLast();
        }
    }

5).总结

  • 递归的正确顺序。
  • 全局变量需要回溯,局部变量不用。
  • 双链表和双端队列的应用。

试题链接:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1170453.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝牙耳机有什么功能怎么用,蓝牙耳机的用法和功能分享

蓝牙耳机最基本的功能就是接听电话&#xff0c;听音乐&#xff0c;兼容其他软件进行无线操作&#xff0c;同时还可以调节音量&#xff0c;播放暂停等功能。不过现如今蓝牙耳机中出现了一个新型的派别——骨传导蓝牙耳机&#xff0c;可以让你在享受音乐的同时&#xff0c;也能保…

6、QtCharts 悬浮曲线效果

文章目录 效果dialog.hdialog.cpp悬浮槽函数 效果 dialog.h #ifndef DIALOG_H #define DIALOG_H#include <QDialog> #include <QtCharts> #include <QLineSeries> #include <QGraphicsScene> #include <QTimer> #include <QSplineSeries>…

为什么在DTO中请要使用包装类型

Java是一种强类型的面向对象编程语言&#xff0c;它为我们提供了一种特殊的类别&#xff0c;叫做数据传输对象&#xff08;Data Transfer Object&#xff0c;DTO&#xff09;。在本篇文章中&#xff0c;我们将详细讨论为什么在DTO中使用包装类型而非基础类型。 1. 什么是DTO&a…

电池原理与分类

1 电池基础知识 电池目前大量应用于我们的生活中&#xff0c;主要包括3C消费类、动力类、储能类。 图1 电池应用方向 备注&#xff1a;3C指的是计算机(Computer )、通讯&#xff08;Communication&#xff09;消费类电子产品&#xff08;Consumer Electronic&#xff09;三类…

GPT4做网页,完成度竟然这么高!!!

CHATGPT简介 chatgpt的自我介绍是这样的&#xff1a; 最近一段时间内&#xff0c;chatgpt可谓是数次引发热议&#xff0c;现在&#xff0c;让我们一起来看看&#xff0c;他所制作的网页究竟能到什么地步呢&#xff1f; 提示词 我给了CHATGPT如下的提示词&#xff0c;那么它…

【一周安全资讯1104】证监会发布《上市公司公告电子化规范》等9项金融行业标准;北京网信办对三家违反数据安全法规企业作出行政处罚

要闻速览 1、证监会发布《上市公司公告电子化规范》等9项金融行业标准 2、《网络安全标准实践指南—粤港澳大湾区跨境个人信息保护要求》公开征求意见 3、北京市网信办对三家企业未履行数据安全保护义务作出行政处罚 4、加拿大禁止政府雇员使用微信和卡巴斯基 5、次覆盖“人的…

CSS解决div行变块 ➕ CSS解决“table中的td文字溢出控制显示字数,显示省略号”的问题

CSS解决div行变块 ➕ CSS解决“table中的td文字溢出控制显示字数&#xff0c;显示省略号”的问题 1. div变块级设置1.1 先看不设置的效果1.2 再看设置之后的效果 2. 解决 table 中 td 内容过长问题2.1 CSS实现&#xff08;文字溢出控制td显示字数&#xff0c;显示省略号&#x…

ssm在线互助答疑系统-计算机毕设 附源码 20862

ssm在线互助答疑系统 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中&#…

(免费领源码)java#ssm#mysql 宠物领养系统08465-计算机毕业设计项目选题推荐

目 录 摘要 1 绪论 1.1课题背景及意义 1.2研究现状 1.3ssm框架介绍 1.3论文结构与章节安排 2 宠物领养系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 …

LeetCode 421. 数组中两个数的最大异或值

原题链接&#xff1a;https://leetcode.cn/problems/maximum-xor-of-two-numbers-in-an-array/description/?envTypedaily-question&envId2023-11-04 题目分析 异或且时间复杂度在nlogn内第一反应想到字典树&#xff0c;扫一遍存进字典树&#xff0c;然后遍历每个数&…

CAM模型可视化(可解释)

模型的可解释性问题一直是个关注的热点。注意&#xff0c;本文所说的“解释”&#xff0c;与我们日常说的“解释”内涵不一样&#xff1a;例如我们给孩子一张猫的图片&#xff0c;让他解释为什么这是一只猫&#xff0c;孩子会说因为它有尖耳朵、胡须等。而我们让CNN模型解释为什…

yolov5简易使用

1.环境配置 从github上下载好yolov5源码后&#xff0c;根据requirement文件配置环境&#xff0c;使用conda新建一个仿真环境&#xff0c;接着使用 pip install -r requirements.txt 来安装环境&#xff0c;安装后首先运行detect.py 发现安装后的环境不能使用&#xff0c;报…

windows10系统-17-文献管理软件

参考诸多文献管理软件的优劣比较如何&#xff1f;你有哪些使用心得&#xff1f; 参考我愿称之为目前最好用的文献管理和阅读软件&#xff01;readpaper 1 文献总结 文献总结是非常重要的一项技能&#xff0c;不知道大家看完文献后有没有总结文献的习惯&#xff0c;有的话那挺…

【中国知名企业高管团队】系列57:康佳KONKA

今天开始&#xff0c;华研荟为大家介绍中国电视行业的知名企业&#xff0c;接下来三天介绍位于深圳的电视三巨头&#xff0c;这三巨头以电视机研发、生产和销售起步&#xff0c;2000左右生产过非智能手机&#xff0c;但是在互联网时代被小米们抢走了电视和手机的很大一部分市场…

大数据之LibrA数据库系统告警处理(ALM-12016 CPU使用率超过阈值)

告警解释 系统每30秒周期性检测CPU使用率&#xff0c;并把实际CPU使用率和阈值相比较。CPU使用率默认提供一个阈值范围。当检测到CPU使用率连续多次&#xff08;可配置&#xff0c;默认值为10&#xff09;超出阈值范围时产生该告警。 平滑次数为1&#xff0c;CPU使用率小于或…

The world,The Matrix and Big Model

黑客帝国&#xff0c;打开了The Matrix与现实世界的关系。今天&#xff0c;现实版的“The Matrix”已经开始逐渐浮现。ChatGPT&#xff0c;打开了这个入口。"The Matrix" 变成了“Big Model”。话不多说&#xff0c;上图。人类借助“Big Model”离开“洞穴”。 人与T…

2023年【危险化学品经营单位安全管理人员】复审考试及危险化学品经营单位安全管理人员模拟考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 危险化学品经营单位安全管理人员复审考试考前必练&#xff01;安全生产模拟考试一点通每个月更新危险化学品经营单位安全管理人员模拟考试题库题目及答案&#xff01;多做几遍&#xff0c;其实通过危险化学品经营单位…

ASO优化之iOS应用关键词的优化技巧2

关键词优化始终必须包括由App Store算法索引的所有元数据元素&#xff0c;所以我们要在关键词字段方面与其他元数据相结合。另外&#xff0c;确保转化率优化策略&#xff0c;是适合我们的关键词策略的。 1、每个关键词只能使用一次。 Apple的算法无论我们使用的频率如何&#…

加密的手机号,如何模糊查询?

前几天&#xff0c;知识星球中有位小伙伴&#xff0c;问了我一个问题&#xff1a;加密的手机号如何模糊查询&#xff1f; 我们都知道&#xff0c;在做系统设计时&#xff0c;考虑到系统的安全性&#xff0c;需要对用户的一些个人隐私信息&#xff0c;比如&#xff1a;登录密码…

基于 NGram 分词,优化 Es 搜索逻辑,并深入理解了 matchPhraseQuery 与 termQuery

基于 NGram 分词&#xff0c;优化 Es 搜索逻辑&#xff0c;并深入理解了 matchPhraseQuery 与 termQuery 前言问题描述排查索引库分词&#xff08;发现问题&#xff09;如何去解决这个问题&#xff1f;IK 分词器NGram 分词器使用替换 NGram 分词器后进行测试matchPhraseQuery 查…