news 2026/5/31 1:24:47

下雨了,算法帮你算能接多少水 ☔

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
下雨了,算法帮你算能接多少水 ☔

求解思路

这道题的关键在于理解每个位置能接多少水。

想象你站在某个位置i上,这个位置能接住的水量取决于什么呢?

其实就是左右两边的"围墙"能托住多高的水。

具体来说就是左右两边最高的柱子,其中,这两个高度中较矮的那个决定了水位线,然后用这个水位线减去当前位置的高度,就是这个位置能接的水量。

如果当前位置本身就比水位线高,那自然接不住水。

所以问题就转化成了:

对于每个位置,我们需要知道它左边的最大值和右边的最大值,然后取两者的较小值作为水位,最后累加每个位置能接的水量即可。

方法1

既然需要知道每个位置左右两边的最大值,最直接的想法就是提前算好

publicstaticinttrap(int[]nums){intn=nums.length;int[]lmax=newint[n];int[]rmax=newint[n];// 计算每个位置左边的最大值lmax[0]=nums[0];for(inti=1;i<n;i++){lmax[i]=Math.max(lmax[i-1],nums[i]);}// 计算每个位置右边的最大值rmax[n-1]=nums[n-1];for(inti=n-2;i>=0;i--){rmax[i]=Math.max(rmax[i+1],nums[i]);}// 累加每个位置能接的水量intans=0;for(inti=1;i<n-1;i++){ans+=Math.max(0,Math.min(lmax[i-1],rmax[i+1])-nums[i]);}returnans;}

方法2

假设左边最大值小于等于右边最大值,那么左指针位置的接水量只取决于左边最大值,右边再高也没用。反之亦然。

publicstaticinttrap(int[]nums){intl=1,r=nums.length-2;intlmax=nums[0],rmax=nums[nums.length-1];intans=0;while(l<=r){if(lmax<=rmax){// 左边矮,左指针位置的水量确定ans+=Math.max(0,lmax-nums[l]);lmax=Math.max(lmax,nums[l++]);}else{// 右边矮,右指针位置的水量确定ans+=Math.max(0,rmax-nums[r]);rmax=Math.max(rmax,nums[r--]);}}returnans;}

如果觉得有帮助,欢迎点赞、关注、转发~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 20:50:08

Windows平台Conda activate报错?Miniconda初始化指南

Windows平台Conda activate报错&#xff1f;Miniconda初始化指南 在人工智能和数据科学项目中&#xff0c;Python 已经成为事实上的标准语言。但随着项目增多&#xff0c;不同任务对 Python 版本、库依赖的要求千差万别——有的需要 PyTorch 1.13&#xff0c;有的必须用 Tensor…

作者头像 李华
网站建设 2026/5/30 19:40:03

requests.post vs 传统方法:效率对比实测

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个对比测试项目&#xff0c;分别使用&#xff1a;1. requests.post 2. urllib.request 3. http.client 实现相同的POST请求功能。要求&#xff1a;1. 统计各方法的代码行数 2…

作者头像 李华
网站建设 2026/5/30 18:08:44

企业级SSH端口管理实战:从-p参数到安全运维

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个企业SSH端口管理系统&#xff0c;功能包括&#xff1a;1. 批量扫描指定端口范围(-p)的SSH服务 2. 自动生成可视化拓扑图 3. 异常连接告警 4. 合规性检查报告。使用DeepSeek…

作者头像 李华
网站建设 2026/5/29 20:46:05

C#调用FLUX.1-dev模型API:Windows环境下AI集成实践

C#调用FLUX.1-dev模型API&#xff1a;Windows环境下AI集成实践 在当今智能应用快速演进的背景下&#xff0c;越来越多的企业希望将前沿AI能力无缝嵌入现有的业务系统中。尤其是图像生成技术——从一段文字自动生成高质量视觉内容的能力——正逐步被应用于设计辅助、营销素材制作…

作者头像 李华
网站建设 2026/5/29 10:21:28

vLLM推理加速镜像发布:支持LLaMA、Qwen、ChatGLM,吞吐提升10倍

vLLM推理加速镜像发布&#xff1a;支持LLaMA、Qwen、ChatGLM&#xff0c;吞吐提升10倍 在大模型落地如火如荼的今天&#xff0c;一个现实问题始终困扰着AI工程团队&#xff1a;如何让7B、13B甚至更大的语言模型&#xff0c;在有限的GPU资源下稳定支撑成百上千用户的并发请求&am…

作者头像 李华
网站建设 2026/5/29 2:53:10

GHelper终极指南:ROG笔记本性能优化与个性化控制完整教程

还在为华硕官方控制软件的卡顿和复杂操作而头疼吗&#xff1f;GHelper来拯救你的ROG笔记本了&#xff01;这款轻量级的开源工具专为华硕ROG系列笔记本设计&#xff0c;帮你轻松掌控硬件性能&#xff0c;释放游戏本的真正潜力。 【免费下载链接】g-helper Lightweight Armoury C…

作者头像 李华