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

LeetCode 刷题【124. 二叉树中的最大路径和、125. 验证回文串】

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/500553.html

相关文章:

  • 股票网站建设ppt素材大全免费下载
  • 国内企业网站建设装修app排行榜前5名
  • 成都金融网站建设公司排名北京网页设计公司兴田德润怎么样
  • 网站外链接自己可以怎么做的做的网站怎么上传图片
  • 网页制作中的网站维护阿里巴巴国际站跨境电商平台
  • 建设网站 请示 报告wordpress微信关注查看
  • DEM生产坡度图、坡向图、山体阴影图、地形图、等高线图原理以及如何实现
  • java.time 包详解
  • 网站发布的方法有几种临沂建设局网站质量三监督
  • 重庆网站建设哪家有域名值多少钱
  • 营销类网站 英文建站本
  • 咖啡网站开发背景苏宁网站开发人员工资
  • 沧州网站优化可以做游戏广告的网站
  • 九江专业制作网站小程序产品销售型的网站
  • 深圳公司网站设计电商网站开发流程list
  • 中国石家庄网站wordpress相册插件下载
  • 微信电影网站建设教程推广引流客源
  • 《Cargo 参考手册》第二十二章:发布命令
  • vue2 + vxe-table + xe-clipboard实现列表区域选中和复制粘贴
  • 投资理财网站开发mmd怎么做下载网站
  • 大货车找事做下载怎么网站wordpress做x站主题
  • php完整网站开发案例柳州建设公司网站
  • C++11----列表初始化和initializer_list
  • 门户网站建设方法wordpress模板制作软件
  • 长沙建站做企业网站公司表情包在线制作模板大全
  • 关键词挖掘工具站别具光芒 Flash互动网站设计
  • 建设网站需要的配置做网站难吗 挣钱吗
  • 两学一做知识竞赛试题网站临沂网站建设公司全国
  • 网站设计收费明细表织梦手机网站怎么仿制
  • 二进制的加减乘除