Trapping Rain Water

原题地址:https://leetcode.com/problems/trapping-rain-water/

该题会给出一个整数类型的向量,模拟的是高度。如果有下雨的话,那雨水就会被收集在低洼的地带。现要计算一个这样的向量能够“收集”多少雨水。

首先考虑单向遍历向量的方法,这样若低洼的右端高于左端,即可以进行正常统计;但是反过来说,若左端高于右端,则无法进行统计。

于是改用双向遍历法,从头尾各自开始遍历。若左端的遍历系数找到了右侧比它高的位置,或右端的系数找到了左侧比它高的位置,则进行统计,直到两个系数在中间会合为止;反之,若出现了比系数更低的情况,则该轮循环结束,并重设比较数为当前所在位置的值,以进行下一轮。同样的,为了避免重复或缺漏,取的这个“比较数”应综合考虑左右两边,即左右系数对应数中较小的那个。

Trapping Rain Water_第1张图片

你可能感兴趣的:(Trapping Rain Water)