网易首页 > 网易号 > 正文 申请入驻

Leetcode难度Hard,其实没你想的那么难

0
分享至

给定 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来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/trapping-rain-water著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

挺有意思的一个题目,日常生活中也到处可见这样的例子。如果我们一格一格从左往右看,能够蓄水的圆柱必定存在下面这样的情况,在它的左边有比它更高的圆柱,在它的右边也有比他更高的圆柱,它最终所能蓄水的大小等于,左右两个比他更高的圆柱中,小的那一个与它本身的高度差。

我们用l[i]表示第i个圆柱左边最高的圆柱高度,用r[i]表示它右边最高的圆柱的高度,那么,圆柱i的蓄水量为min{l[i], r[i]} >= h[i] ?min{l[i], r[i]} - h[i] : 0。那么,求一个序列的最左边的做大值,最右边的最大值,我们已经在很多不同的算法题当中遇见过了,这是一个常见的算法套路,我们可以从左往右枚举,用递推的套路,求出l[i],同理,从右往左,求出r[i]。这些都是可以在O(n)的算法复杂度里面解决的。

不过我昨天做这个题目的时候,想到的并不是这种解法,对于一个常年刷题的人来说,看到这样的问题,自然而然的想到的解法就是单调问题。我们可以把这个图沿着最高点拆成2部分,当装满水的时候,必然会成为阶梯形状的,所以,我们只要去找到这个阶梯形状的各个拐点即可。也就是先找到最高点,然后找到次高点,接着找到第三高点。

按照上述的思路,我们先找到最高点,然后逐渐去寻找阶梯的拐角点。这里有两种算法,第一种是先排序,我们按照高度优先,进行排序,我们用tmp来记录上一个高点的位置,如果当前高度的坐标大于上一个高点,那么不予考虑,直接丢弃,否则,说明上一个高点到当前点的最大蓄水高度为h[i],遍历计算出最终的蓄水量。

另外一种做法,要去找到所有阶梯的拐点,由于是阶梯形状的,所以,我们可以维护一个单调栈进行解决。什么是单调栈呢?就是栈底到栈顶的值的大小是单调递增或者递减的。维护单调栈的方法非常的简单,就是当当前值小于栈顶的时候,直接入栈。当大于栈顶的时候,栈顶不断出栈,直到栈为空或者小于栈顶元素。与之非常相似的,有单调队列。后续我们有机会会继续讲一讲。

当然,这个题目还有很多种不同的做法,甚至可以不用寻找最高点也可以用栈解决。不过我觉得上述两种方法都是最直观跟容易理解的。不知道你有没有其他不同的解法,一起交流,共同进步。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
现役25岁以下潜力最大的5位球员:爱德华兹仅第二,莫兰特没上榜

现役25岁以下潜力最大的5位球员:爱德华兹仅第二,莫兰特没上榜

老郎体育汇
2024-04-03 17:56:17
乔治和哈登收到羞辱合同!快船做法惹众怒,鲍尔默守着小卡哭去吧

乔治和哈登收到羞辱合同!快船做法惹众怒,鲍尔默守着小卡哭去吧

张敏
2024-05-05 13:57:43
里程碑事件,紫晶存储欺诈退市,股民每位获赔5元/股!

里程碑事件,紫晶存储欺诈退市,股民每位获赔5元/股!

惜别的海岸
2024-05-05 07:55:36
开门红!李凯尔更新社媒晒帅照:拿下第一场

开门红!李凯尔更新社媒晒帅照:拿下第一场

直播吧
2024-05-05 17:51:34
一场4:0大胜之后,申花遭遇两个致命暴击,下一轮战津门虎难了

一场4:0大胜之后,申花遭遇两个致命暴击,下一轮战津门虎难了

零度眼看球
2024-05-05 21:30:49
李继耐:从未担任作战部队主官,却开创2大军事记录,妻子是少将

李继耐:从未担任作战部队主官,却开创2大军事记录,妻子是少将

史座y
2024-05-05 09:05:27
《火锅》票房大扑街!导演丁晟直播落泪,杨幂宣传摆烂被批不上心

《火锅》票房大扑街!导演丁晟直播落泪,杨幂宣传摆烂被批不上心

萌神木木
2024-05-03 21:34:14
提级调查!相关责任人已被公安控制!河南大学大礼堂深夜大火,央视主持人任鲁豫、知名金融圈大佬发文缅怀!修缮项目公司曝光→

提级调查!相关责任人已被公安控制!河南大学大礼堂深夜大火,央视主持人任鲁豫、知名金融圈大佬发文缅怀!修缮项目公司曝光→

每日经济新闻
2024-05-04 00:03:11
中央批准,他出任“戎装常委”

中央批准,他出任“戎装常委”

鲁中晨报
2024-05-05 19:16:08
决赛3比1力克印尼!中国队时隔6年重新捧起汤姆斯杯

决赛3比1力克印尼!中国队时隔6年重新捧起汤姆斯杯

澎湃新闻
2024-05-05 22:26:31
男性50岁以后,眉毛突然变长,说明了什么?多数人或许还并不了解

男性50岁以后,眉毛突然变长,说明了什么?多数人或许还并不了解

腊五
2024-05-04 13:17:21
朱东铁简历

朱东铁简历

大爱三湘
2024-05-05 20:57:49
辽宁男篮拒绝被逆转!郭艾伦确定出战,杨鸣调整阵容,CCTV5直播

辽宁男篮拒绝被逆转!郭艾伦确定出战,杨鸣调整阵容,CCTV5直播

体坛瞎白话
2024-05-05 13:30:19
深圳超上海、天津超上海、武汉超上海,事实是全都超不了?

深圳超上海、天津超上海、武汉超上海,事实是全都超不了?

创作者朱海平
2024-04-24 10:02:59
热闻|山东高速路上一车爆胎侧翻,16辆私家车停车救援!网友怒赞

热闻|山东高速路上一车爆胎侧翻,16辆私家车停车救援!网友怒赞

齐鲁壹点
2024-05-05 10:55:51
华强北无可奈何,只因一个ID密码,无数的iPhone要当垃圾扔掉

华强北无可奈何,只因一个ID密码,无数的iPhone要当垃圾扔掉

奇奇怪怪的冒险
2024-04-25 07:45:10
马航冤魂通灵实录:马航MH370空难十年,巫师召唤亡灵道出惊人内幕

马航冤魂通灵实录:马航MH370空难十年,巫师召唤亡灵道出惊人内幕

飞云如水
2024-05-02 09:10:10
为什么大家现在都讨厌“宗教品牌”

为什么大家现在都讨厌“宗教品牌”

星星car
2024-05-04 21:41:47
令人心痛!三名出色的宇航员惨死在真空中,这次空难足以警醒世人

令人心痛!三名出色的宇航员惨死在真空中,这次空难足以警醒世人

搞笑的阿票
2024-05-05 07:05:03
什么尺寸的丁丁,更受女生喜欢?

什么尺寸的丁丁,更受女生喜欢?

坟头长草
2024-05-01 10:55:00
2024-05-05 22:44:49
沙茶敏碎碎念
沙茶敏碎碎念
一个有态度的程序员
209文章数 4169关注度
往期回顾 全部

教育要闻

校园丑绝人寰的10所美国大学!这不是去上学,这是进了厂房……

头条要闻

决赛3比1力克印尼 国羽男队时隔6年重新捧起汤姆斯杯

头条要闻

决赛3比1力克印尼 国羽男队时隔6年重新捧起汤姆斯杯

体育要闻

2年,从英甲到英超!37岁的他创造奇迹

娱乐要闻

黄子韬被曝求婚徐艺洋 大量亲密照曝光

财经要闻

20大要点!巴菲特谈聊到AI、苹果、投资

科技要闻

Meta买英伟达GPU已花300亿美元 超当年登月

汽车要闻

"高阶智驾"配上了 极狐阿尔法S先行版PRO亮相

态度原创

健康
本地
艺术
公开课
军事航空

春天野菜不知不识莫乱吃

本地新闻

食味印象 | 潍坊:碳水脑袋的人间乐园

艺术要闻

造科幻之物于园林 “天工开悟——夏航雕塑展”于南池子美术馆呈现

公开课

父亲年龄越大孩子越不聪明?

军事要闻

俄方通缉泽连斯基 乌方回应:毫无价值

无障碍浏览 进入关怀版