当前位置: 首页 > ds >正文

leetcode 路径总和III java

参考leetcode上大神的思路:https://leetcode.cn/problems/path-sum-iii/solutions/596361/dui-qian-zhui-he-jie-fa-de-yi-dian-jie-s-dey6,添加了自己的注释。
前缀和为Long类型 Map<Long,Integer> prefixSumCount = new HashMap<>();
recur函数里要有prefixSumCounttargetSum,或者宏观定义一下。

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution { public int pathSum(TreeNode root, int targetSum) {Map<Long,Integer> prefixSumCount = new HashMap<>();prefixSumCount.put(0L,1);//prefixMap: key--前缀和 value--前缀和的节点数量return recur(root,prefixSumCount,targetSum,0L);}private int recur(TreeNode node, Map<Long, Integer> prefixSumCount, int targetSum, Long curSum){if(node == null){return 0;}int res = 0;curSum += node.val;//看看之前的前缀和有没有为curSum-targetSum的res += prefixSumCount.getOrDefault(curSum-targetSum,0);//更新key为curSum的value值prefixSumCount.put(curSum, prefixSumCount.getOrDefault(curSum,0)+1);//更新左右子节点int left = recur(node.left,prefixSumCount,targetSum,curSum);int right = recur(node.right,prefixSumCount,targetSum,curSum);res = res+left+right;//恢复状态: 在遍历完一个节点的所有子节点后,将其从map中除去。prefixSumCount.put(curSum,prefixSumCount.get(curSum)-1);return res;}}
http://www.xdnf.cn/news/13940.html

相关文章:

  • 【unitrix】1.2 unitrix 物理量计算库(lib.rs)
  • springboot集成minio详细流程代码
  • 报表工具顶尖对决系列—关联过滤
  • [原创]X86C++反汇编03.除法的优化
  • 使用Nginx 如何解决Access-Control-Allow-Origin问题
  • 【大模型-写作】LLMxMapReduce-V2 自动修改大纲 生成高质量文章
  • 在macOS上运行Linux容器的方法
  • go-carbon v2.6.8 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
  • 【C/C++】创建文件夹
  • FreeRTOS事件组
  • Jetpack LiveData 深度解析
  • 什么是EcoVadis审核?EcoVadis审核的评估框架,EcoVadis审核流程
  • Odoo 企业版和社区版区别系列文章之一 日历模块 Calendar
  • 瑞利光测:桥梁结构健康监测解决方案,以光纤光栅技术筑牢安全防线
  • 小结:Spring AOP 切点表达式
  • 中国人工智能社区发展研究报告(2025)
  • MySQL 索引类型及其必要性与优点
  • 【QT】 QGraphicsItem 获取点坐标的几种方法
  • error report
  • 5种常见的网络保密通信协议
  • 【Linux】regmap子系统
  • 智慧工厂物联网解决方案:纺织厂边缘计算网关应用
  • 图像处理控件Aspose.Imaging教程:图像处理控件Aspose.Imaging教程:在Java中构建 SVG 图像调整器
  • vanna多表关联的实验
  • 将idea的目录结构以文本导出
  • MySQL 8.0的数据库root用户默认无法远程登录,需要修改root的远程授权
  • 使用AkShare获取大A列表
  • ( github actions + workflow 03 ) 手动添加 token, 防止权限不够
  • 运营商实名验证接口如何用Python实现调用?
  • 新疆大学具身导航新范式!DOPE:基于双重对象感知增强网络的视觉语言导航