news 2026/4/18 12:45:33

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

作者头像

张小明

前端开发工程师

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/4/18 5:23:02

QD框架模板订阅系统:5分钟快速获取海量自动化脚本资源

想要实现HTTP定时任务的零基础快速搭建&#xff1f;QD框架的公共模板订阅系统为您提供了完美的解决方案&#xff01;这个基于HAR编辑器和Tornado服务端的HTTP定时任务自动执行Web框架&#xff0c;通过智能的模板订阅机制&#xff0c;让您轻松拥有丰富的自动化脚本库&#xff0c…

作者头像 李华
网站建设 2026/4/18 1:50:02

手把手教你用Conda搭建Stable Diffusion 3.5 FP8环境(含CUDA安装)

手把手教你用 Conda 搭建 Stable Diffusion 3.5 FP8 环境&#xff08;含 CUDA 安装&#xff09; 在消费级显卡上流畅生成 10241024 分辨率的高质量图像&#xff0c;曾经是许多 AI 创作者遥不可及的梦想。随着 Stable Diffusion 3.5 FP8 版本的发布&#xff0c;这一目标终于变得…

作者头像 李华
网站建设 2026/4/18 5:38:51

PyTorch模型加载FP8权重失败?常见错误代码及修复方法汇总

PyTorch模型加载FP8权重失败&#xff1f;常见错误代码及修复方法汇总 在生成式AI快速落地的今天&#xff0c;Stable Diffusion 已从研究项目演变为工业级内容生产工具。越来越多的企业尝试将 stable-diffusion-3.5-fp8 这类高性能量化模型部署到线上服务中——它能在几乎不牺牲…

作者头像 李华
网站建设 2026/4/18 5:23:25

15分钟搭建paraphrase-multilingual-minilm-l12-v2文本改写原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 快速开发一个paraphrase-multilingual-minilm-l12-v2模型的文本改写原型&#xff0c;支持用户输入文本并选择目标语言&#xff0c;实时生成改写结果。要求使用轻量级框架&#xff0…

作者头像 李华
网站建设 2026/4/18 10:07:49

解密GPT的“续写”魔法:自回归模型

当你和AI聊天时&#xff0c;它回答的每句话&#xff0c;其实都是一个字一个字“猜”出来的。它只做一件事&#xff1a;根据已经说出的所有字&#xff0c;猜出下一个最可能的字。 你问&#xff1a;“今天天气&#xff1f;” AI心里在猜&#xff1a;看到“今天天气” → 猜下一个…

作者头像 李华
网站建设 2026/4/17 9:54:23

Windows 11远程桌面多用户配置指南:RDP Wrapper完整教程

还在为Windows 11只能单用户远程连接而烦恼&#xff1f;RDP Wrapper Library这款开源工具能够帮你轻松实现多用户同时远程访问功能&#xff0c;让家庭版系统也能享受企业级的远程桌面体验。无论你是IT管理员、开发者还是普通用户&#xff0c;这份完整配置手册都将为你提供简单实…

作者头像 李华