LeetCode 第42题 接雨水
class Solution { public int trap(int[] height) { int ans 0; // 保存总共承接雨水总量 int left 0, right height.length - 1; // 左右双指针 int leftMax 0, rightMax 0; // left左侧最高柱子、right右侧最高柱子 while(left right) { // 更新左边最大高度 leftMax Math.max(leftMax, height[left]); // 更新右边最大高度 rightMax Math.max(rightMax, height[right]); if(height[left] height[right]) { // 左边柱子更低当前位置存水量 左侧最高高度 - 当前柱子高度 ans leftMax - height[left]; left; } else { // 右边柱子更低当前位置存水量 右侧最高高度 - 当前柱子高度 ans rightMax - height[right]; right--; } } return ans; } }一、核心算法思想双指针 O (n)、空间 O (1)基础理论单个位置蓄水量 min (当前位置左侧最高柱子当前位置右侧最高柱子) − 当前柱子高度定义左指针left起始于数组头部右指针right起始于数组尾部leftMax记录左指针遍历路径上的最高柱子rightMax记录右指针遍历路径上的最高柱子短板判定规则如果height[left] height[right]左侧为短板。此时leftMax就是左右两侧较小的最大值直接计算当前 left 位置雨水左指针右移如果height[left] height[right]右侧为短板。此时rightMax就是左右两侧较小的最大值直接计算当前 right 位置雨水右指针左移累加每个位置蓄水量指针相遇循环结束返回雨水总和。记忆口诀哪边柱子矮先算哪边蓄水量移动哪边指针。二、实例运行表格推演测试样例height [0,1,0,2,1,0,1,3,2,1,2,1]初始状态left0right11leftMax0rightMax0ans0leftrightheight[left]height[right]leftMaxrightMax大小对比当前格子雨水总水量 ans0110101left 矮0-0001111111相等走右侧逻辑1-1001101212left 矮1-1002100212left 矮1-0113102222相等走右侧逻辑2-201392122right 矮2-112382222相等走右侧逻辑2-202372323left 矮2-202471323left 矮2-113570323left 矮2-025671323left 矮2-116循环终止条件left7right7不满足leftright最终总雨水ans6。三、易错点与知识点总结1. 容易混淆题目区分LeetCode 11【盛最多水的容器】 VS LeetCode 42【接雨水】11 题求两根柱子之间形成的矩形面积整体区间蓄水42 题逐根竖柱单独计算垂直方向雨水每个位置受左右最高柱子限制两道题模型完全不同不要混用思路。2. 核心概念误区leftMax和rightMax不是全局最大值只是指针行进路径上记录的最大值。依靠「短板效应」不需要预先开辟数组存储每个位置左右最大值实现 O (1) 空间复杂度。3. 蓄水量不会为负数leftMax永远大于等于height[left]rightMax永远大于等于height[right]因此计算出的雨水数值≥0无需额外判断。

相关新闻

普通电脑训练小型LLM:从环境搭建到实战调优完整指南

普通电脑训练小型LLM:从环境搭建到实战调优完整指南

还记得第一次听说“大语言模型”这个词时,我正对着屏幕上一行行代码发呆。那感觉就像听人谈论如何建造火箭,而我还在琢磨怎么把自行车链条装回去。但后来我发现,其实用普通电脑训练一个小型LLM,远没有想象中那么遥不可及——它更像…

2026/7/29 3:08:27阅读更多 →
基于Mind+与掌控板的AI语音垃圾分类助手:从硬件选型到图形化编程实战

基于Mind+与掌控板的AI语音垃圾分类助手:从硬件选型到图形化编程实战

1. 项目缘起:当掌控板遇上AI,让垃圾分类“开口说话”最近在折腾Mind和掌控板,总想搞点不一样的东西。之前用掌控板做过温湿度监测、物联网控制,甚至一些简单的图像识别,但总觉得缺了点“智能感”。直到看到社区里有人用…

2026/7/29 3:08:27阅读更多 →
Unlock Music:打破音乐平台枷锁的终极解决方案

Unlock Music:打破音乐平台枷锁的终极解决方案

Unlock Music:打破音乐平台枷锁的终极解决方案 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https://gitc…

2026/7/29 3:06:26阅读更多 →
[特殊字符] 2026 上半年十大攻击事件深度复盘:从零日漏洞到数据擦除,安全团队正在经历的噩梦

[特殊字符] 2026 上半年十大攻击事件深度复盘:从零日漏洞到数据擦除,安全团队正在经历的噩梦

微软一个月修了 208 个漏洞,Cisco SD-WAN 一年被曝 7 个零日,医疗巨头被数据擦除攻击瘫痪三周——2026 年上半年的安全形势,比你想象的更严峻。你好,我是老张。2026 年上半年已经过去。这六个月里,网络安全领域发生了一…

2026/7/29 4:31:10阅读更多 →
Altium Designer系统参数设置指南:从基础配置到智能车PCB设计实战

Altium Designer系统参数设置指南:从基础配置到智能车PCB设计实战

1. 项目概述:从零到一,构建智能车竞赛的硬件基石如果你正在备战全国大学生智能车竞赛,或者任何需要一块稳定、高性能PCB的嵌入式项目,那么“AD软件系统参数的一些基本设置”这个看似基础的话题,可能就是决定你作品成败…

2026/7/29 4:31:10阅读更多 →
前端加密实战:cryptoJs核心功能与应用详解

前端加密实战:cryptoJs核心功能与应用详解

1. cryptoJs核心功能解析cryptoJs是前端领域最常用的加密库之一,它实现了多种主流加密算法,包括AES、DES、TripleDES、Rabbit、RC4、MD5、SHA-1、SHA-256等。这个库之所以在前端开发中广受欢迎,主要因为它解决了浏览器环境下的几个关键问题&a…

2026/7/29 4:31:10阅读更多 →
STM32 DMA双缓冲模式原理与HAL库实战:解决高速数据流采集难题

STM32 DMA双缓冲模式原理与HAL库实战:解决高速数据流采集难题

1. 从“搬运工”到“流水线”:DMA双缓冲模式的场景价值如果你用过STM32的DMA,大概率会觉得它是个省心的“搬运工”。你告诉它源地址、目标地址和搬运数量,它就能在后台默默地把数据从外设(比如ADC、串口)搬到内存&…

2026/7/29 4:31:10阅读更多 →
Arduino PWM调光台实战:从电位器到LED的模拟信号控制

Arduino PWM调光台实战:从电位器到LED的模拟信号控制

1. 项目概述:从零打造一个交互式彩灯调光台如果你手头有一块Arduino开发板、几个LED灯和几个电位器,是不是总觉得只能做些流水灯或者简单的呼吸灯?今天这个项目,就是带你把这些简单的元件组合起来,做成一个真正有“台”…

2026/7/29 4:31:10阅读更多 →
Qt文件元数据操作:QFileInfo核心功能与跨平台实践指南

Qt文件元数据操作:QFileInfo核心功能与跨平台实践指南

1. 项目概述:为什么我们需要QFileInfo? 在Qt开发中,处理文件是家常便饭。无论是读取配置文件、加载用户上传的图片,还是管理本地缓存,我们都需要和文件系统打交道。很多时候,我们需要的不仅仅是打开一个文件…

2026/7/29 4:29:09阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/28 4:06:39阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/28 2:08:06阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/28 1:38:28阅读更多 →
28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“!

28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“!

28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“! 在构建复杂的 Agent 系统时,我们经常会遇到这样的场景:Agent 正在执行一个多步骤的任务,比如“下单购买商品”,但执行到一半时,我们…

2026/7/29 0:01:46阅读更多 →
自律同行,突破无界!NANK南卡正式官宣曾舜晞成为品牌代言人

自律同行,突破无界!NANK南卡正式官宣曾舜晞成为品牌代言人

近日,国际专注开放式技术研发的声学品牌Nank南卡,正式官宣实力艺人曾舜晞担任品牌代言人。消息一经发出便轰动全网。为什么耳机品牌不选择流量明星、老牌歌手?而且是选择曾舜晞?让我们一起来探索一下!比起短期的流量&a…

2026/7/29 0:01:46阅读更多 →
【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:01:46阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/28 20:22:24阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/29 4:31:51阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/28 2:35:58阅读更多 →