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

徐州企业建站模板一个网站的制作过程

徐州企业建站模板,一个网站的制作过程,美团app开发费用,网站怎么免费建站更新时间:2025-04-04 算法题解目录汇总:算法刷题记录——题解目录汇总技术博客总目录:计算机技术系列博客——目录页 优先整理热门100及面试150,不定期持续更新,欢迎关注! 124. 二叉树中的最大路径和 二…

更新时间:2025-04-04

  • 算法题解目录汇总:算法刷题记录——题解目录汇总
  • 技术博客总目录:计算机技术系列博客——目录页

优先整理热门100及面试150,不定期持续更新,欢迎关注!


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

二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。
路径和 是路径中各节点值的总和。
给你一个二叉树的根节点 root ,返回其 最大路径和

示例 1:

输入:root = [1,2,3]
输出:6

解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6

示例 2:

输入:root = [-10,9,20,null,null,15,7]
输出:42

解释:最优路径是 15 -> 20 -> 7 ,路径和为 15 + 20 + 7 = 42

提示:

  • 树中节点数目范围是 [1, 3*10^4]
  • -1000 <= Node.val <= 1000

方法:递归法(后序遍历)

通过后序遍历计算每个节点的最大贡献值,并更新全局最大路径和。

  • 每个节点计算其左右子树的最大贡献值(若贡献为负则取0)。
  • 当前节点的总路径和为 自身值 + 左贡献 + 右贡献,更新全局最大值。
  • 返回当前节点能为父节点提供的单边最大贡献(即 自身值 + max(左贡献, 右贡献))。

代码实现(Java):

class Solution {private int maxSum = Integer.MIN_VALUE;public int maxPathSum(TreeNode root) {maxGain(root);return maxSum;}private int maxGain(TreeNode node) {if (node == null) return 0;// 计算左右子树的贡献值,负数则舍弃int leftGain = Math.max(maxGain(node.left), 0);int rightGain = Math.max(maxGain(node.right), 0);// 当前节点作为路径中间节点的总路径和int currentPathSum = node.val + leftGain + rightGain;maxSum = Math.max(maxSum, currentPathSum);// 返回当前节点能提供的最大单边贡献(给父节点使用)return node.val + Math.max(leftGain, rightGain);}
}

复杂度分析

  • 时间复杂度:O(n),所有节点仅访问一次。
  • 空间复杂度:O(h),递归栈深度(h为树的高度,最坏情况下为O(n))。

128. 最长连续序列

给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。

请你设计并实现时间复杂度为 O(n) 的算法解决此问题。

示例 1:

输入:nums = [100,4,200,1,3,2]
输出:4

解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。

示例 2:

输入:nums = [0,3,7,2,5,8,4,6,0,1]
输出:9

示例 3:

输入:nums = [1,0,1,2]
输出:3

提示:

  • 0 <= nums.length <= 10^5
  • -10^9 <= nums[i] <= 10^9

方法:哈希集合优化

利用哈希集合存储所有数字,仅对可能的连续序列起点进行检查,避免重复计算。

  1. 去重存储:将所有数字存入哈希集合,去除重复。
  2. 查找起点:遍历集合中的元素,若当前数字的前驱(num-1)不在集合中,则视为序列起点。
  3. 扩展序列:从起点开始逐个查找后续数字,计算当前连续序列长度。
  4. 更新结果:记录遍历过程中的最大序列长度。

代码:

class Solution {public int longestConsecutive(int[] nums) {Set<Integer> numSet = new HashSet<>();for (int num : nums) {numSet.add(num);}int maxLength = 0;for (int num : numSet) {// 只有当num是序列起点(前驱不存在)时才处理if (!numSet.contains(num - 1)) {int currentNum = num;int currentLength = 1;// 向后扩展序列while (numSet.contains(currentNum + 1)) {currentNum++;currentLength++;}maxLength = Math.max(maxLength, currentLength);}}return maxLength;}
}

复杂度分析:

  • 时间复杂度O(n)。每个元素最多被访问两次(加入集合和扩展序列)。
  • 空间复杂度O(n)。哈希集合存储所有元素。

声明

  1. 本文版权归 CSDN 用户 Allen Wurlitzer 所有,遵循CC-BY-SA协议发布,转载请注明出处。
  2. 本文题目来源 力扣-LeetCode ,著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
http://www.dtcms.com/a/406166.html

相关文章:

  • phpmysql网站开发项目式教程房地产开发公司招聘
  • python+springboot+uniapp基于微信小程序的巴马旅居养老系统 旅游养老小程序
  • 阿里云无影发布首个Agentic Computer形态的个人计算产品
  • PHP 8.0+ 元编程与编译时优化:构建下一代PHP框架
  • aws用ami新创建之后用密码登录不了
  • 安科瑞Acrel-1000DP分布式光伏监控系统:赋能光储充一体化,光功率预测助力电站高效运维与收益提升
  • 网站建设引擎旅游网站开发系统
  • 建设银行网站点不进去了怎么办网站全站开发
  • 【Java后端】Spring Boot 比 Spring 的优势:以 RESTful 接口开发为例 一文详解
  • 计算机软件工程毕设项目推荐—基于协同过滤算法的理财产品推荐系统(采用余弦相似度计算推荐,Python,Flask,Vue,Mysql,B/S架构)
  • docker-卷
  • 电子行业如何通过MES管理系统实现柔性制造,应对订单波动?
  • ​​[硬件电路-324]:芯片根据功能、信号类型、应用场景、制造工艺、集成度及设计理念等多个维度进行分类
  • 扶沟县建设局网站网络规划与设计教程
  • 文化传播公司网站模版网站建设哪好
  • Charles 抓包 HTTPS 原理详解,从 CONNECT 到 SSL Proxying、常见问题与真机调试实战(含 Sniffmaster 补充方案)
  • LeetCode 135.分发糖果
  • 计算机视觉:OpenCV+Dlib 人脸检测
  • 开源 C# 快速开发(二)基础控件
  • 安庆公司做网站国外开源商城系统
  • 烟台哪家公司可以做网站灌云县建设局网站
  • 基于sprintboot+vue的智慧辅助学习系统(源码+论文+部署+安装)
  • 基于阿里云系列平台的python微服务设计与DevOps实践
  • 山东临沂网站开发免费的推广网站
  • PAT乙级_1047 编程团体赛_Python_AC解法_无疑难点
  • SystemVerilog小白入门1, iverilog+VScode
  • 微算法科技(NASDAQ: MLGO)融合二次矩阵变换模型,研发基于区块链的可溯源IP版权保护算法
  • 示范校建设验收网站做ppt图片用的网站
  • 新宁县建设局网站沭阳网站建设多少钱
  • 脑电模型实战系列:深化网络-多层全连接在情绪识别中的威力