Leetcode42——接雨水

题目描述

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


样例

在这里插入图片描述


解决思路

从左往右遍历数组,找到每一个桶,并计算出每个桶所能装的水。


解决要点

  1. 桶左侧的特征:假设i位置是桶的左侧,那么它的值一定比i+1位置的值大,也就是比i+1位置高。
  2. 桶右侧的特征:如果右侧的柱子回避左侧高,那么一定是这个第一个高的位置作为它的桶,理由很简单,因为那样就能接最多的水了,之后再高,其值不变。如果不存在比左侧高的柱子,那么一定是那些短柱中的最大值的那根,唯有这样,才能接最多的水。
  3. 计算桶能装的水:桶左右两侧最小值去乘以宽再减去中间柱子的高度(要求高度不大于两侧最小值),如果比桶两侧最小值还高,那么减去桶两侧的最小值,而不是那个原本的高度。

执行结果

在这里插入图片描述


参考代码

代码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值