Leetcode面试经典150题-42.接雨水

embedded/2024/9/23 23:22:24/

解法都在代码里,不懂就留言或者私信

class Solution {/**本题的解题思路是双指针:一个从头开始一个从尾巴开始,两头的肯定是没有办法接住雨水的,你可以认为0位置左边是0的柱子所以理论上我们是从1遍历到n-2,但是你也可以遍历0到N-1,两种方式的不用我们设置的变量值也不同以我从1~n-2遍历来说,我先把lMax设置为heigh[0], rMax设置为height[height.lenght - 1]如果以0~N-1遍历来说,两个变量都设置为0遍历的过程中比较lMax和rMax的大小,lMax小结算左边,rMax小的话结算右边如果lMax和rMax相同则两个都结算,所以遍历过程中很可能出现每次计算两个的情况,比如[5,1,1,2,3,4,5]左边结算时用Math.max(0, lMax-height[left]),右边使用Math.max(0, rMax-height[right])这样结算的原理是就算只有两根柱子,我们要结算的柱子加上水也至少可以到达短的那个柱子的高度但是就算中间有更高的柱子,根据木桶原理,也确实只能放这么多*/public int trap(int[] height) {/**空的或者只有两个及以下的柱子是放不了水的,因为我们认为边缘的柱子高度都是0 */if(height == null || height.length <= 2){return 0;}/**左边从1开始,右边从height.length-2开始 */int left = 1;int right = height.length - 2;/**lMax, rMax代表目前为止左右柱子的最大高度 */int lMax = height[0];int rMax = height[height.length - 1];int ans = 0;while(left < right) {/**lMax小计算左边,rMax大更新右边,中间记得尝试更细lMax和rMax*/if(lMax < rMax) {ans += Math.max(0, lMax - height[left]);lMax = Math.max(lMax, height[left ++]);} else if(rMax < lMax) {ans += Math.max(0,rMax - height[right]);rMax = Math.max(rMax, height[right --]);} else {ans += Math.max(0,lMax - height[left]);ans += Math.max(0,rMax - height[right]);lMax = Math.max(lMax, height[left ++]);rMax = Math.max(rMax, height[right--]);}}/**如果最后是因为left=right退出的,需要单独结算一下这个位置 */if(left == right) {ans += Math.max(0, Math.min(lMax, rMax) - height[left]);}return ans;}
}

运行结果


http://www.ppmy.cn/embedded/100810.html

相关文章

【PHP报错已解决】‘/www/wwwroot/xxxxxx/public/../thinkphp/start.php‘

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引言&#xff1a; 作为开发者&#xff0c;遇到报错信息是在所难免的。然而&#xff0c;有些报错信息可能会让我们感到困惑&…

无人机+消防车:高楼灭火系统技术详解

“无人机消防车”高楼灭火系统技术是一种创新的消防解决方案&#xff0c;旨在解决高层建筑灭火难题。以下是对该技术的详细解析&#xff1a; 一、技术背景与需求 高层建筑数量多&#xff0c;火灾隐患多发。根据国家消防救援局发布的数据&#xff0c;高层建筑火灾频发&#xf…

【SQL】將SQL文件匯入數據庫

需求&#xff1a;本地文档&#xff0c;读取内容并写入SQLServer 思路&#xff1a; 1.遍历本地路径 2.读取路径下所有的文档 3.批量汇入SQLServer 参考代码&#xff1a; --建立導入表 Create table [dbo].[SQL_LeadingIN] (SPName varchar(1000),Content varchar(max) )-…

如何评估Redis的性能

如果系统中出现了大 key、热 key 等&#xff0c;往往会导致 Redis 变慢&#xff0c;但是这个慢该如何界定&#xff1f;多久算慢&#xff1f;1秒还是3秒&#xff1f; 这个肯定是没有标准答案&#xff0c;因为这个和你的硬件设备有关。 硬件差一些&#xff0c;平时响应时间都是…

【数据结构3】哈希表、哈希表的应用(集合与字典、md5算法和文件的哈希值)

1 哈希表 哈希表一个通过哈希函数来计算数据存 储位置的数据结构&#xff0c;通常支持如下操作: 插入(键&#xff0c;值):插入键值对(键&#xff0c;值) Get(key):如果存在键为键的键值对则返回其值&#xff0c;否则返回空值 删除(键):删除键为键的键值对哈希表(Hash Table&am…

三维平面电磁铁、交流电磁铁、显微镜磁场北京大学方案

根据用户北京大学需求设计制造方案如下 三维平面电磁铁产品规格 5MPS63-25型三维平面电磁铁&#xff0c;X、Y方向磁场由2对正交的磁极产生&#xff0c;Z轴由一组同轴线圈产生&#xff1b; 每轴对应的两个线圈正接产生均匀磁场&#xff0c;反接产生梯度磁场&#xff1b; …

Linux 离线安装docker和docker-compose

前言 公司有 docker 和 docker-compose 离线包安装部署的需求&#xff0c;本文应运而生撰写时间&#xff1a;2024-06-07&#xff08;初稿&#xff09; 1 应用版本 docker&#xff1a;20.10.7, build f0df350docker-compose&#xff1a;1.25.1 2 物料准备 服务器账号/密码d…

记录一下在IIS上部署服务器上遇到的一系列问题及解决方案

注&#xff1a;遇到问题要先查看日志&#xff0c;配置时遇到的问题在windows窗口搜索 事件查看器 Windows日志下&#xff0c;应用程序里&#xff0c;来源为IIS AspNetCore Module V2为配置服务器&#xff0c;并启动时产生的日志&#xff0c;错误信息会记录在此 如果是通讯时遇…