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

LeetCode 刷题【124. 二叉树中的最大路径和】

124. 二叉树中的最大路径和

自己做

解:后序遍历

/*** 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 {private int max = Integer.MIN_VALUE;public int postTravel(TreeNode root){if(root == null)return 0;int left = postTravel(root.left);int right = postTravel(root.right);//选其中一条路径if(left + root.val > max)           //选左边max = left + root.val;if(right + root.val > max)          //选右边max = right + root.val;if(root.val > max)                  //都不选max = root.val;//根连接两边路径if(left + root.val + right > max)max = left + root.val + right;//向上传递下面的最大路径和return Integer.max(Integer.max(left, right) + root.val, root.val);}public int maxPathSum(TreeNode root) {postTravel(root);return max;}
}

看题解

官方题解

原来只管往上传就好了

class Solution {int maxSum = Integer.MIN_VALUE;public int maxPathSum(TreeNode root) {maxGain(root);return maxSum;}public int maxGain(TreeNode node) {if (node == null) {return 0;}// 递归计算左右子节点的最大贡献值// 只有在最大贡献值大于 0 时,才会选取对应子节点int leftGain = Math.max(maxGain(node.left), 0);int rightGain = Math.max(maxGain(node.right), 0);// 节点的最大路径和取决于该节点的值与该节点的左右子节点的最大贡献值int priceNewpath = node.val + leftGain + rightGain;// 更新答案maxSum = Math.max(maxSum, priceNewpath);// 返回节点的最大贡献值return node.val + Math.max(leftGain, rightGain);}
}

125. 验证回文串

自己做

解:头尾双指针

class Solution {public boolean isPalindrome(String s) {int head = 0, tail = s.length() - 1;//跳过非字符、非数字while(head < tail && !(s.charAt(head) >= 'a' && s.charAt(head) <= 'z' ||s.charAt(head) >= 'A' && s.charAt(head) <= 'Z' ||s.charAt(head) >= '0' && s.charAt(head) <= '9'))head++;while(head < tail && !(s.charAt(tail) >= 'a' && s.charAt(tail) <= 'z' ||s.charAt(tail) >= 'A' && s.charAt(tail) <= 'Z' ||s.charAt(tail) >= '0' && s.charAt(tail) <= '9'))tail--;while(head < tail){//统一转为大写比较char left = s.charAt(head);char right = s.charAt(tail);if(left >= 'a')left -= 32;if(right >= 'a')right -= 32;if(left != right)      //不匹配return false;head++;tail--;//跳过非字符、非数字while(head < tail && !(s.charAt(head) >= 'a' && s.charAt(head) <= 'z' ||s.charAt(head) >= 'A' && s.charAt(head) <= 'Z' ||s.charAt(head) >= '0' && s.charAt(head) <= '9'))head++;while(head < tail && !(s.charAt(tail) >= 'a' && s.charAt(tail) <= 'z' ||s.charAt(tail) >= 'A' && s.charAt(tail) <= 'Z' ||s.charAt(tail) >= '0' && s.charAt(tail) <= '9'))tail--;}return true;}
}

http://www.dtcms.com/a/498899.html

相关文章:

  • linux 的文件结构
  • stack,queue,咕咕咕!
  • 做网站不实名认证可以吗佛山城市建设工程有限公司
  • 构建基于大语言模型的智能数据可视化分析工具的学习总结
  • Android 架构演进全解析:MVC、MVP、MVVM、MVI 图文详解
  • 网站后台免费模板下载艺术字体在线生成器转换器
  • HC32 操作GPIO点亮LED(HC库)
  • 如何用python来做小游戏
  • 捡到h3开发板,做了个视频小车(二),御游追风plus做遥控器
  • U盘安装群晖RR引导
  • 昆山市住房和城乡建设网站wordpress淘宝联盟
  • 数据库中表和视图的关系
  • 优先级队列的学习(二)
  • 内部排序——一文速通
  • 数据结构——东方财富掘金量化速成学习(python)
  • 做网站商城项目的流程深圳专业网站设计哪家好
  • 【招聘】-音视频行业企业的招聘分析
  • css word属性
  • 晋中网站seo芯火信息做网站怎么样
  • Orleans 流系统握手机制时序图
  • 【C + +】异常处理:深度解析与实战
  • 《从理论到实践:红黑树的自平衡机制与C++高效实现指南》
  • 将iOS/macOS应用上架至App Store
  • 海南做网站电话如今做哪个网站能致富
  • 数据结构——栈在递归中的应用
  • java.net 包详解
  • Three.js光照技术详解:为3D场景注入灵魂
  • 企业门户网站系统下载网店平台
  • 监听指定事件然后触发鼠标点击操作等,智能文本识别按键工具的使用教程
  • connect 的断线重连