栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Hot100】42. 接雨水

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Hot100】42. 接雨水

42. 接雨水

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

  • 双指针法

1)对于某一个位置i, 我们能否接这个位置上的雨水, 取决于i左右两侧的最大值(leftMax, rightMax)是否比height[i]大,只有当i左右两侧的最大值都比height[i]大时, 才能接i上的雨水, 数量为min(leftMax, rightMax) - height[i];
2) 对于i和j两个指针, i从左向右移动, j从右向左移动, 对于指针i来说, leftMax是真实可信的, 因为leftMax的值是i一步一步走出来的, 但是rightMax是不真实不可信的, 因为i不知道从height[i]到height[j]之间是否有其他的数大于rightMax;同样,对于j来说rightMax是真实可信的, leftMax值是不真实不可信的,即对于左指针i, 它右侧的真实的最大值 >= rightMax, 对于右指针j, 它左侧的真实的最大值 >= leftMax
3) 当出现leftMax rightMax的时候, 右指针的位置是否能接雨水就已经确定了,当left==right时,i和j都可以确定

//双指针法
class 
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1007068.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号