尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

LeetCode Hot100 接雨水解题思路详解

LeetCode Hot100 接雨水解题思路详解
📅 发布时间:2026/6/20 14:50:25

LeetCode Hot100:接雨水解题思路详解

题目描述

给定n个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

例如,输入height = [0,1,0,2,1,0,1,3,2,1,2,1],输出为6。

解题思路

这道题的核心思想是:对于每一个位置i,它能够存储的雨水量取决于其左右两侧最高柱子中的较小值与当前柱子高度的差值。

具体步骤如下:
  1. 定义状态

    • leftMax[i]表示从左端到位置i的最大高度。
    • rightMax[i]表示从右端到位置i的最大高度。
  2. 预处理左右最大值数组

    • 从左向右遍历,填充leftMax数组:
      leftMax[0] = height[0]; for (int i = 1; i < n; i++) { leftMax[i] = Math.max(height[i], leftMax[i - 1]); }
    • 从右向左遍历,填充rightMax数组:
      rightMax[n - 1] = height[n - 1]; for (int i = n - 2; i >= 0; i--) { rightMax[i] = Math.max(height[i], rightMax[i + 1]); }
  3. 计算每个位置的积水量对于每个位置i,其能接的雨水量为:

    min(leftMax[i], rightMax[i]) - height[i]

    将所有位置的积水量累加即可得到答案。

  4. 返回结果最终将总和ans返回。

完整代码实现

class Solution { public int trap(int[] height) { int n = height.length; if (n == 0) return 0; int[] leftMax = new int[n]; int[] rightMax = new int[n]; // 构建 leftMax leftMax[0] = height[0]; for (int i = 1; i < n; i++) { leftMax[i] = Math.max(height[i], leftMax[i - 1]); } // 构建 rightMax rightMax[n - 1] = height[n - 1]; for (int i = n - 2; i >= 0; i--) { rightMax[i] = Math.max(height[i], rightMax[i + 1]); } // 计算总积水量 int ans = 0; for (int i = 0; i < n; i++) { ans += Math.min(leftMax[i], rightMax[i]) - height[i]; } return ans; } }

时间复杂度分析

  • 时间复杂度:O(n),三次线性扫描。
  • 空间复杂度:O(n),使用了两个额外数组leftMax和rightMax。

总结

该方法通过预处理左右最大值,避免了在每个位置重复查找最大值,从而提升了效率。虽然空间复杂度较高,但逻辑清晰,易于理解和实现。

提示:此题还可以用双指针法优化空间复杂度至 O(1),留作进阶思考。

相关新闻

  • Docker 搭建漏洞环境:转行网络安全高效练手的方法(附镜像清单)
  • 2025最新热熏蒸舱品牌TOP5评测!科技赋能健康管理,行业优质公司榜单助力科学养生选择 - 全局中转站
  • Windows远程桌面多用户连接终极指南:RDP Wrapper完全解锁方案

最新新闻

  • 数据驱动负载预测与健康感知在船舶混合动力系统能量管理中的应用
  • 电容触摸传感调试利器:Electrode Graphing Tool 实战指南
  • 基于CBF与CCG的机器人未知动态障碍物概率安全导航方法
  • 2026年湖南PD门品牌单发布:技术与格局之变 - 品牌鉴赏官2026
  • Java泛型不是语法糖:擦除机制与类型安全实战
  • 告别龟速下载:9大网盘直链助手如何帮你实现下载自由?

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号