【感受算法魅力T05】【可视化简单易懂】北湖深坑

此图片的alt属性为空;文件名为image-11-1024x877.png

思路分享

对于本题,某一横坐标处存在积水的条件是该点位于两个比他更高的坐标之间,且该坐标处的积水高度等于其两侧的第二高的高度与该点高度之差

由此可见,我们只需要从左至右将所有点的积水高度相加即可。

解题步骤

要确定某一点是“制高点”还是“积水点”或其他点,我们需要知道该点两侧的高度信息。

我们可以声明两个数组,分别用于记录某一点(含该点)左侧以及右侧的最高点高度,这一部分可以通过简单的遍历实现。更进一步,其实我们不需要知道左侧以及右侧最高点的高度,我们也可以只开辟一个数组,用于记录该点两侧“第二高”点的高度即可,因为超过“第二高”点的所有位置都不会有积水。

接着,我们遍历所有点,并根据不同情况进行讨论:

1. 该点是“干旱点”,两侧中至少有一侧没有高于它的点:该点处无积水,直接忽略;

2. 该点是“积水点”,位于两个比它更高的点之间:该点处的积水高度为【两侧“第二高”的点高度 - 该点高度】。

将上述数据累加求和,即可得出蓄水体积。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值