求和路径00

题目链接

求和路径

题目描述

注意点

  • 节点总数 <= 10000
  • 节点的值可能是正数或负数
  • 路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下(只能从父节点指向子节点方向)

解答思路

  • 因为要求树的路径和,所以初始想到的是深度优先遍历,如果暴力求每条路径的路径和,那么很多路径会重复计算,所以考虑使用前缀和
  • 使用map存储前缀和,其中key是前缀和,value是前缀和为preSum的数量,前缀和是从根节点到达任意一个节点的路径和(未到达根节点则前缀和为0,方便后续讨论从根节点出发的路径和)
  • 当到达任意一个节点node,此时从根节点root到达node的路径和为curr,以node作为路径末尾时路径和为sum的路径数量应该是map.getOrDefault(curr - sum, 0),解释为curr是root到node的路径和,curr - sum是root到node的某个父节点parent的路径和,此时parent的下一个节点与node之间的路径和就是sum,满足题意(具体有没有这个parent取决于map.get(curr - sum)是否为0
  • 当到达任意一个节点node,还要更新前缀和对应的map,也就是将curr + node.val存进map中,方便继续深搜遍历,在深搜完成后,要对前缀和进行回溯,否则node的同一层或者父节点进行深搜时会出错

代码

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {int res = 0;public int pathSum(TreeNode root, int sum) {Map<Integer, Integer> map = new HashMap<>();// 前缀和为0也就是从根节点出发的路径和map.put(0, 1);dfs(root, sum, 0, map);return res;}public void dfs(TreeNode node, int sum, int curr, Map<Integer, Integer> map) {if (node == null) {return;}curr += node.val;res += map.getOrDefault(curr - sum, 0);// 记录前缀和map.put(curr, map.getOrDefault(curr, 0) + 1);dfs(node.left, sum, curr, map);dfs(node.right, sum, curr, map);// 该节点的情况已讨论完,前缀和回溯map.put(curr, map.get(curr) - 1);}
}

关键点

  • 前缀和的思想
  • 初始map赋值map.put(0, 1),方便考虑从根节点出发的路径和为sum的情况
  • 在对某个节点求前缀和并对其左右子树深搜后,要进行回溯

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

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

相关文章

杏仁核亚区在情绪处理中的特化

摘要 杏仁核对人类的恐惧情绪处理至关重要。然而&#xff0c;目前的研究未能揭示其特异性&#xff0c;有证据表明杏仁核也会对其他情绪做出反应。鉴于情绪功能对日常生活和心理健康的重要性&#xff0c;我们需要更加细致地了解杏仁核在情绪加工中的作用&#xff0c;特别是与恐…

LLM之RAG实战(四十)| 使用LangChain SQL Agent和MySQL搭建多层RAG ChatBot

在传统的意义上&#xff0c;RAG 主要是从文档中检索用户想要的数据&#xff0c;从而提高大模型的能力&#xff0c;减少幻觉问题。今天&#xff0c;我们从另一个维度介绍RAG&#xff0c;RAG不从文档中获取数据&#xff0c;而是从MySQL数据库检索数据。我们可以使用LangChain SQL…

python脚本实现arcgis离散型切片png格式十六进制名称转十进制名称

背景 Arcgis中离散型切片为png格式时,它的名称是十六进制格式的,而Arcgis不支持转为十进制格式的,所有需要自己写一个脚本来转换 效果 脚本 import osdef hex_to_dec(name):return str(int(name, 16))def

动捕技术服务+虚拟人动画制作:让ip形象更自然生动的“动”起来

近日&#xff0c;西安交通大学口腔医院集合口腔特色与陕西文化元素&#xff0c;形成了以牙齿、兵马俑、牙刷等元素相结合的医院主IP形象“牙小俑”。在活动现场虚拟人“牙小俑”通过虚拟人动画的形式介绍IP的诞生&#xff0c;生动形象地传递了医院品牌文化&#xff0c;为医院品…

蒂姆·库克解释Apple Intelligence和与ChatGPT合作的区别|TodayAI

在2024年全球开发者大会&#xff08;WWDC 2024&#xff09;上&#xff0c;苹果公司首席执行官蒂姆库克&#xff08;Tim Cook&#xff09;隆重介绍了公司的最新人工智能&#xff08;AI&#xff09;计划——Apple Intelligence&#xff0c;并宣布了与OpenAI的ChatGPT的合作。虽然…

BeanDefinition注册器

. BeanDefinition继承接口AliasRegistry 注册别名的能力 一个简单的实现 public class SimpleBeanDefinitionRegistry extends SimpleAliasRegistry implements BeanDefinitionRegistry { // 维持一个线程看全的map用来保存beanDefinition private final Map<String, Bea…

CV预测:快速使用LeNet-5卷积神经网络

AI预测相关目录 AI预测流程&#xff0c;包括ETL、算法策略、算法模型、模型评估、可视化等相关内容 最好有基础的python算法预测经验 EEMD策略及踩坑VMD-CNN-LSTM时序预测对双向LSTM等模型添加自注意力机制K折叠交叉验证optuna超参数优化框架多任务学习-模型融合策略Transform…

Spring-事件

Java 事件/监听器编程模型 设计模式-观察者模式的拓展 可观察者对象(消息发送者) Java.util.Observalbe观察者 java.util.Observer 标准化接口(标记接口) 事件对象 java.util.EventObject事件监听器 java.util.EventListener public class ObserverDemo {public static vo…

一文学会消息中间件的基础知识

什么是消息队列 队列数据结构 我们都学习过数据结构与算法相关的内容,消息队列从数据结构来看,就是一个由链表或是数组构成的一个先进先出的数据容器。由链表实现还是数组实现都没关系,它只要满足数据项是先进先出的特点,那么就可以认为它是一个队列结构。队列是只允许在…

Chrome插件分享-Stylus

简介 Stylus 是一个调整网页外观的用户样式管理器。它可以让您轻松为许多热门网站安装主题和皮肤。 这是 chrome 应用商店对Stylus插件的介绍&#xff0c;通俗一点讲&#xff0c;就是可以根据不同网站来定制网页的主题和皮肤&#xff0c;甚至可以去广告。 还有一个重点是&#…

便捷生活,从便民平台开始

想要生活更轻松、更便捷吗&#xff1f;那就来试试我们的便民平台吧&#xff01;生活中的琐事总是让人头疼不已&#xff0c;但有了我们的便民平台&#xff0c;一切问题都迎刃而解&#xff01; 咸阳便民平台的张总说&#xff1a;无论您是需要家政服务、维修安装&#xff0c;还是寻…

PCL 任意二维图像转点云

目录 一、概述二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、概述 给定任意一张图片,通过代码操作将图片转成点云。图像中包含大量可用信息,其中必不可少的信息为像素坐标和像素值,将像…

HTML静态网页成品作业(HTML+CSS)—— 零食商城网页(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…

[数据集][目标检测]减速带检测数据集VOC+YOLO格式5400张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;5400 标注数量(xml文件个数)&#xff1a;5400 标注数量(txt文件个数)&#xff1a;5400 标注…

C# 设置PDF表单不可编辑、或提取PDF表单数据

PDF表单是PDF中的可编辑区域&#xff0c;允许用户填写指定信息。当表单填写完成后&#xff0c;有时候我们可能需要将其设置为不可编辑&#xff0c;以保护表单内容的完整性和可靠性。或者需要从PDF表单中提取数据以便后续处理或分析。 之前文章详细介绍过如何使用免费Spire.PDF…

红酒保存中的氧气管理:适度接触与避免过度氧化

在保存云仓酒庄雷盛红酒的过程中&#xff0c;我们不得不面对一个微妙的问题&#xff1a;氧气管理。氧气&#xff0c;这个我们生活中无处不在的气体&#xff0c;对于红酒的保存却有着至关重要的影响。适度接触氧气对红酒的陈年过程和品质维护具有积极作用&#xff0c;然而过度氧…

如何保障生物制药企业,HPC环境下数据下载的安全性问题?

许多不同类型的公司和组织可能会使用高性能计算&#xff08;HPC&#xff09;来解决各种复杂的问题。制药和生物技术企业使用高性能计算&#xff08;HPC&#xff09;的方式多种多样&#xff0c;同时也涉及HPC环境下数据下载安全性问题的考量。主要包括以下几个方面&#xff1a; …

这三款使用的视频、图片设计工具,提供工作效率

Videograp Videograp是一款专注于视频生成的工具&#xff0c;特别适合需要快速剪辑和编辑视频的用户。Videograp具备以下特点&#xff1a; 影音比例转换&#xff1a;Videograp支持调整视频的分辨率和比例&#xff0c;使其更适合不同的播放环境和设备。 AI快剪&#xff1a;该工…

独立游戏之路:Tap篇 -- Unity 集成 TapTap 广告详细步骤

Unity 集成 TapADN 广告详细步骤 前言一、TapTap 广告介绍二、集成 TapTap 广告的步骤2.1 进入广告后台2.2 创建广告计划2.3 选择广告类型三、代码集成3.1 下载SDK3.2 工程配置3.3 源码分享四、常见问题4.1 有展现量没有预估收益 /eCPM 波动大?4.2 新建正式媒体找不到预约游戏…

李宏毅深度学习01——基本概念简介

视频链接 基本概念 Regression&#xff08;回归&#xff09;&#xff1a; 类似于填空 Classification&#xff08;分类&#xff09;&#xff1a; 类似于选择 Structure Learning&#xff08;机器学习&#xff09;&#xff1a; &#xff1f;&#xff1f; 机器学习找对应函数…