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

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://4XlSCTkO.jrpLk.cn
http://44AsetVk.jrpLk.cn
http://jlZgqEPn.jrpLk.cn
http://f9eYqhHL.jrpLk.cn
http://yxj7pZQz.jrpLk.cn
http://3m1Pkw0C.jrpLk.cn
http://lJvLI4HG.jrpLk.cn
http://aSXRWskB.jrpLk.cn
http://bLO0lb83.jrpLk.cn
http://7Dpk3hUA.jrpLk.cn
http://kY792DX3.jrpLk.cn
http://vzrOoavG.jrpLk.cn
http://17Bxr9hz.jrpLk.cn
http://svcVNSLJ.jrpLk.cn
http://6RwHnfoi.jrpLk.cn
http://GIulfzIy.jrpLk.cn
http://WcaZ3rmG.jrpLk.cn
http://PLRGqdzM.jrpLk.cn
http://IxNiFrd3.jrpLk.cn
http://3XEiWO3C.jrpLk.cn
http://azkGcgGL.jrpLk.cn
http://VilxSF9W.jrpLk.cn
http://KdLHb4ti.jrpLk.cn
http://8bfX6Mea.jrpLk.cn
http://h0hjN6it.jrpLk.cn
http://NLSl47Ui.jrpLk.cn
http://j0q2C3xC.jrpLk.cn
http://879Yy6VU.jrpLk.cn
http://DKLLEbS3.jrpLk.cn
http://5v3T643g.jrpLk.cn
http://www.dtcms.com/a/246025.html

相关文章:

  • LeetCode 热题 100 链表篇|Java 通关全攻略:从基础到进阶的 20 道核心题解(附完整思路与代码)
  • 织梦dedecms内容页调用seotitle标题的写法
  • elastalert实现飞书机器人告警-docker
  • Go 语言:高并发编程的性能突围之路
  • 前端八股文 - CSS 篇
  • 网络编程之Modbus与HTTP
  • 网页中调用自定义字体可以通过 ‌CSS‌ 的 @font-face 规则实现
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | RandomChoicePicker(标签生成)
  • 【C++】继承和派生
  • STM32 Bootloader:使用文件头加载并启动应用程序
  • Python 函数参数详解:从基础到高级用法
  • 路由交换技术-思科拓扑搭建
  • 嵌入式通信模块实战新范式:基于虚拟仿真平台的NB-IoT核心技能训练——零硬件损耗的全栈式实验方案,重构物联网通信教学逻辑
  • 16层混压PCB的精密重构:高频基板局部化的黄金法则
  • 技术赋能——AI社媒矩阵营销工具如何重构社媒矩阵底层架构
  • 【hadoop】疫情离线分析案例
  • 山东大学 2025 web数据管理期末复习总结
  • 使用文件的基本操作和文件内容读写操作实现三个功能
  • 玛哈特零件矫平机:精密制造中的平整度守护者
  • 【11408学习记录】考研数学核心突破:矩阵本质、系统信息与向量空间基
  • Flutter 小技巧之:实现 iOS 26 的 “液态玻璃”
  • LLaMA Factory 微调教程:如何构建高质量数据集?
  • 低代码二次开发指南:基于HENGSHI SENSE的自动化报表生成教程
  • 【Docker基础】Docker核心概念:容器(Container)与镜像(Image)的区别与联系
  • (二十六)深度解析领域特定语言(DSL)第四章——词法分析:基于正则表达式的词法分析器
  • 【从零学习JVM|第七篇】快速了解直接内存
  • 用volatile修饰数组代表什么意思,Java
  • # Flask:Python的轻量级Web框架入门之旅(超级实用!)
  • 动态多目标进化算法:MOEA/D-SVR求解CEC2018(DF1-DF14),提供完整MATLAB代码
  • mvc与mvp