Lintcode363 Trapping Rain Water solution 题解

【题目描述】

Given non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.

 

给定n个非负整数,表示一个高程图,其中每个条形图的宽度为1,计算下雨后它能捕到多少水。

 

【题目链接】

www.lintcode.com/en/problem/trapping-rain-water/

【题目解析】

此题挨个分析每个A[i]能trapped water的容量,然后将所有的A[i]的trapped water容量相加即可

其次,对于每个A[i]能trapped water的容量,取决于A[i]左右两边的高度(可延展)较小值与A[i]的差值,即volume[i] = [min(left[i], right[i]) - A[i]] * 1,这里的1是宽度,如果the width of each bar is 2,那就要乘以2了”

那么如何求A[i]的左右高度呢? 要知道,能盛多少水主要看短板。那么对每个A[i]来说,要求一个最高的左短板,再求一个最高的右短板,这两个直接最短的板子减去A[i]原有的值就是能成多少水了。

所以需要两遍遍历,一个从左到右,找最高的左短板;一个从右到左,找最高的右短板。最后记录下盛水量的总值就是最终结果了。

【参考答案】

www.jiuzhang.com/solutions/trapping-rain-water/

转载于:https://my.oschina.net/u/3776581/blog/1621700

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值