LeetCode 42. 接雨水

Leetcode 42:JavaScript解力扣接雨水算法详细到每一行注释 一 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 一眼看到这题,要左右左右对比计算好烦,于是立刻想到一层一层计算的方法,但是使用递归的话会爆栈啊??不管了————谁叫我像风一样自由~ 就像你的温柔 ~ ... 阅读详情

题目:

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

在这里插入图片描述

上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。

示例:
输入: [0,1,0,2,1,0,1,3,2,1,2,1]
输出: 6

题解:

class Solution {
    public int trap(int[] height) {
        int len=height.length;
        if(len==0){
            return 0;
        }
        int res=0;
        //当前i位置左边高度的最大值
        int[] leftMax=new int[len];
        //当前i位置右边高度的最大值
        int[] rightMax=new int[len];
        leftMax[0]=height[0];
        //一开始这个地方脑子没有转过来圈,想着对于每一个height[i],
        //求它左边的最大值都要都往遍历一次,这样时间复杂度就是O(n*n)
        //看了大神的解答之后,感觉就是利用冒泡排序里面的思想,
        //逆序来求最大值,遍历一遍就可以了
        for(int i=1;i<len;i++){
            leftMax[i]=Math.max(height[i],leftMax[i-1]);
        }
        rightMax[len-1]=height[len-1];
        for(int i=len-2;i>=0;i--){
            rightMax[i]=Math.max(height[i],rightMax[i+1]);
        }
        for(int i=0;i<len;i++){
            res+=Math.min(leftMax[i],rightMax[i])-height[i];
        }
        return res;
    }
}
LeetCode 42.接雨水 给定一个包含非负整数的数组height,每个元素表示一个柱子的高度。每个柱子宽度为 1,计算按此排列的柱子,下雨之后能接多少雨水。i。 阅读详情

相关推荐

【困难】力扣算法题解析LeetCode42:接雨水

本文介绍了如何计算柱状图中的雨水积累量。通过双指针法,动态维护左右两侧的最大高度,每次移动较小高度侧的指针来计算当前位置的积水量。时间复杂度为O(n),空间复杂度为O(1)。该方法高效地解决了问题,适用于大规模数据。

ylumwd的博客 425

LeetCode第42题:接雨水

LeetCode第42题题目详述解法一解法二解法三 题目详述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例:如图:[0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解法一 暴力法。时间复杂度:O(n^2),空间复杂度:O(1) class Solution { public int trap(in...

weixin_42610002的博客 329

python【力扣LeetCode算法题库】42-接雨水(双指针法)

42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。 示例: 输入: [0,1,0,2,1,0,1,3,2,1,2,1] 输出: 6 如果maxleft<m...

NJU phd 在读。 906

Leetcode 42 接雨水 Java

Leetcode 42 接雨水 思想:用两个数组分别记录从左往右的最大值以及从右往左的最大值。我不知道该怎么描述,就相当于描述木桶的两条边,然后木桶的盛水量与短板有关。 而用两个数组记录到某一个位置时,左右两边的木板的最高位置为多少 举个例子: 对于左木板而言,只要水位低于该位置往左最高的木板,水就能被兜住。对右木板同样道理。 因此,当数组为(换行,对应起来方便看) [0,1,0,2,1,0,1...

qxdPx的博客 837

信息抽取实战:三元组抽取(限定领域 vs 开放领域)(附代码)

信息抽取实战:三元组抽取 目录信息抽取实战:三元组抽取一、限定领域的三元组抽取比赛介绍数据分析序列标注模型关系分类模型三元组提取总结开放领域的三元组抽取标注平台文本分类新数据进行三元组抽取总结参考文献 一、限定领域的三元组抽取   本项目将会介绍在2019语言与智能技术竞赛的三元组抽取比赛方面的一次尝试。由于该比赛早已结束,当时也没有参加这个比赛,因此没有测评成绩,我们也只能拿到训练集和验证集。但是,这并不耽误我们在这方面做实验。 比赛介绍   该比赛的网址为:http://lic2019.ccf.org.

南有芙蕖 2万+

基于YOLOX与LPRNet的车牌检测与识别系统(Python+UI界面)实战指南

本文详细介绍了如何利用YOLOX目标检测模型与LPRNet车牌识别模型,从零构建一个完整的车牌检测与识别系统。通过解析CCPD数据集、训练深度学习模型,并最终集成到PyQt5开发的图形化UI界面中,提供了一个从数据处理到应用部署的完整实战指南,帮助开发者快速掌握智能交通系统中的关键技术。

weixin_29230901的博客 338

LeetCode42. 接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。 示例: 输入: [0,1,0,2,1,0,1,3,2,1,2,1] 输出: 6 先遍历一遍数组,引入数组left...

qq_31617121的博客 1166

MIPS-5级流水线CPU

一、流水线CPU 流水线CPU就是指将一条分解为多步,在同一周期内进行多条指令的同时执行。MIPS五级流水线就是将指令分为:取指(IF),译码(ID),执行(EX),访存(MEM),写回(WB)五个阶段。举个例子: 比如第二条指令lui $t2,0x2100 在流水线CPU中执行的就是 可以看到在200-300ns的周期里,IF阶段取到0x00400004处的指令,300-400ns,这条指令到了ID阶段,而IF阶段执行下一条指令。400-500ns,执行这条指令,ALU的结果为0x2100

weixin_43877853的博客 2万+

leetcode第42题,接雨水,java实现

题目链接 运行结果 执行结果:通过 执行用时 :2 ms, 在所有 Java 提交中击败了50.62%的用户 内存消耗 :37.5 MB, 在所有 Java 提交中击败了83.13%的用户 代码与注释 class Solution { public int trap(int[] height) { int left = 1; // 左指针 int righ...

qq_29168809的博客 676

YOLOv10 的损失函数解析

YOLOv10 在 YOLO 系列的演进中进一步优化了任务解耦与动态平衡策略,通过 ​多模态损失融合、自适应样本分配 和 ​轻量化设计,显著提升了检测精度与推理效率。

浩瀚之水的专栏 1378

下采样新突破!ADown模块让YOLOv11多尺度特征提取更精准

ADown 凭借可编程梯度信息与多分支特征聚合的创新设计,打破了传统下采样在特征保留上的固有局限。本教程从原理到代码实现,再到工业场景适配,完整呈现了其在 YOLOv11 中的集成路径。只需简单新增模块脚本并修改配置文件,你的目标检测模型就能在多尺度特征捕捉能力上实现跨越式提升——无论是学术研究中的小目标检测突破,还是工业场景下的复杂多尺度任务落地,ADown 都能成为你攻克下采样瓶颈的利器。现在就动手尝试,让你的检测模型在下一代下采样技术的创新中再上一个台阶吧。

know_F0727的博客 524

【数组与排序】接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。 示例: 输入: [0,1,0,2,1,0,1,3,2,1,2,1] 输出: 6 class Solution { public...

邓乐来Jacob的博客 572

CMake入门教程【基础篇】在Windows、Linux上安装CMake

CMake如何下载与安装

小鱼酱的博客 2727

【LeetCode力扣】42.接雨水(困难)

一个用木板围成的桶能装多少水取决于最短的那块木板,同理,这道题我们可以把它看做成是由若干块木板组成的一个桶,只是它们是以并排的方式组成的,这里我用left和right两个指针分别指向最左和最右的两块木板,用变量 sum 来记录总的装水量以及两个变量 leftMax和rightMax来记录左边最高的木板值和右边最高的木板值

m0_65277261的博客 1213

44位abogus补环境与纯算逆向分析

44位ab参数补环境与纯算加密流程逆向分析

吴秋霖的博客 2774

PCL 利用RANSAC改进的ICP算法

本文介绍了一种基于RANSAC改进的ICP点云配准算法。算法原理部分阐述了在ICP迭代过程中使用RANSAC剔除错误匹配点对的方法。

点云侠的博客 196

【LeetCode力扣】42. 接雨水

42. 接雨水 - 力扣(LeetCode)leftMax用于记录当前左指针left经过的最大高度,同理rightMax用于记录当前左指针right经过的最大高度。下标 i 处能否接水以及接到水的数量其实取决于左指针left到 i 时所经过的最大高度leftMax与右指针right到 i 时所经过的最大高度rightMax它们之间的较小值。

Hacynn的博客 2757

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

力扣第42题:接雨水——单调栈

LeetCode第42题 接雨水 单调栈

qq_43903506的博客 3995

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

力扣(leetcode) 42. 接雨水 (带你逐步思考)

难度:hard给定n个非负整数表示每个宽度为1的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。主要需要实现快速对leftmax和rightmax的求解,这个十分简单,从左到右,从右到左各一次遍历就可以求出。将结果存放到数组里后续使用即可降低时间复杂度。这里由于需要保存rightmax,消耗了O(n)的内存,有没有更节省空间的方法?

龙卡的博客 888

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

力扣(LeetCode)100题:42.接雨水

本文介绍了LeetCode"接雨水"问题的三种解法。双指针解法通过左右指针从两边遍历,计算当前位置与左右最大高度差来累加雨水;动态规划解法预处理左右最大高度数组,用空间换时间将复杂度优化到O(n);单调栈方法利用递减栈结构实时计算低洼区域积水。三种方法各有特点,双指针空间最优(O(1)),动态规划思路直观(O(n)空间),单调栈则模拟了逐层积水的过程(O(n)空间)。

sweet_ran的博客 1097

力扣题解系列:42:接雨水

题目:42. 接雨水 题目描述: 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。 来源:https://leetcode-cn.com/problems/trapping-rain-water/ 示例: 输入: [0,1,0,2,1,0,1,3,2,1,2,1] 输出: 6 思路

qq_38813052的博客 2180

LeetCode 力扣 42. 接雨水

题目描述(困难难度) 黑色的看成墙,蓝色的看成水,宽度一样,给定一个数组,每个数代表从左到右墙的高度,求出能装多少单位的水。也就是图中蓝色正方形的个数。 解法一 按行求 这是我最开始想到的一个解法,提交后直接 AC 了,自己都震惊了。就是先求高度为 1 的水,再求高度为 2 的水,再求高度为 3 的水。 整个思路就是,求第 i 层的水,遍历每个位置,如果当前的高度小于 i,并且两边有高度大于等于...

wind_liang的博客 1049

力扣第42题 接雨水

记录一下刷题历程 力扣第42题 接雨水。

buaichifanqie的博客 1527

LeetCode 每日一题 42. 接雨水 详细多种题解 C++描述

LeetCode 每日一题 42. 接雨水 详细多种题解 C++描述

一起加油 7520

力扣42.接雨水

对于每个一个位置。

Pisasama的博客 894

LeetCode 42接雨水

LeetCode 42接雨水 题目简述:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水 输入:[0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 思路一:暴力解法 每个矩形条上方能接受水的高度,是由它左边最高的矩形,和右边最高的矩形决定的。因此需要从当前元素开始向左扫描并更新左边矩形最大值left_max = max(le

XBlog 252
上一篇: LeetCode 287. 寻找重复数
下一篇: LeetCode 560. 和为K的子数组
pdfcxc
博客等级 码龄10年 23粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值