news 2026/10/3 12:38:12

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

作者头像

张小明

前端开发工程师

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/10/3 2:34:21

ensp下载官网无法访问?这里有网络工程学习替代路径

网络工程学习困局破局&#xff1a;当eNSP不可用时&#xff0c;AI如何重塑实训体验 在高校网络工程课堂上&#xff0c;一个再熟悉不过的场景正在反复上演&#xff1a;学生打开电脑准备完成VLAN配置实验&#xff0c;却发现华为eNSP官网无法访问&#xff1b;镜像下载链接失效、安装…

作者头像 李华
网站建设 2026/10/3 7:57:11

用Percona XtraBackup快速搭建数据库灾备原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个快速搭建MySQL灾备系统的原型工具&#xff0c;功能包括&#xff1a;1. 自动化配置主从复制环境 2. 集成Percona XtraBackup进行定期全量增量备份 3. 支持备份数据加密和异地…

作者头像 李华
网站建设 2026/10/3 5:38:49

你认为 “豆包手机” 有可能在激烈的手机市场中脱颖而出吗?

豆包手机&#xff0c;作为2025年12月发布的创新型智能手机&#xff0c;其背后的AI技术和情感智能系统引发了业内外广泛关注。随着智能手机市场进入成熟阶段&#xff0c;竞争变得更加激烈。很多厂商在追求硬件性能和智能化应用方面早已做了大量布局&#xff0c;而豆包的出现&…

作者头像 李华
网站建设 2026/10/2 15:14:11

Syncovery Premium:专业级文件同步备份解决方案,支持多协议与云存储

Syncovery Premium是一款功能全面的专业文件同步与备份工具&#xff0c;以其高效的同步算法和丰富的功能集&#xff0c;在数据管理领域保持着领先地位。该软件通过智能化的同步策略和灵活的配置选项&#xff0c;为用户提供了可靠的数据保护解决方案。 获取地址&#xff1a;htt…

作者头像 李华
网站建设 2026/10/2 23:51:31

在线考试系统毕业论文+PPT(附源代码+演示视频)

文章目录在线考试系统一、项目简介&#xff08;源代码在文末&#xff09;1.运行视频2.&#x1f680; 项目技术栈3.✅ 环境要求说明4.包含的文件列表&#xff08;含论文&#xff09;数据库结构与测试用例系统功能结构前台运行截图后台运行截图项目部署源码下载在线考试系统 如需…

作者头像 李华
网站建设 2026/10/3 12:22:37

Git Stash临时保存未完成的PyTorch代码修改

Git Stash临时保存未完成的PyTorch代码修改 在深度学习项目中&#xff0c;你是否经历过这样的场景&#xff1a;正全神贯注地调试一个复杂的PyTorch模型训练脚本&#xff0c;刚写完数据增强逻辑、调整了优化器参数&#xff0c;突然收到消息——生产环境的主分支出现严重bug&…

作者头像 李华