本文最后更新于 458 天前,其中的信息可能已经有所发展或是发生改变。
思路分享
对于本题,某一横坐标处存在积水的条件是该点位于两个比他更高的坐标之间,且该坐标处的积水高度等于其两侧的第二高的高度与该点高度之差。
由此可见,我们只需要从左至右将所有点的积水高度相加即可。
解题步骤
要确定某一点是“制高点”还是“积水点”或其他点,我们需要知道该点两侧的高度信息。
我们可以声明两个数组,分别用于记录某一点(含该点)左侧以及右侧的最高点高度,这一部分可以通过简单的遍历实现。更进一步,其实我们不需要知道左侧以及右侧最高点的高度,我们也可以只开辟一个数组,用于记录该点两侧“第二高”点的高度即可,因为超过“第二高”点的所有位置都不会有积水。
接着,我们遍历所有点,并根据不同情况进行讨论:
1. 该点是“干旱点”,两侧中至少有一侧没有高于它的点:该点处无积水,直接忽略;
2. 该点是“积水点”,位于两个比它更高的点之间:该点处的积水高度为【两侧“第二高”的点高度 - 该点高度】。
将上述数据累加求和,即可得出蓄水体积。