42.困住的雨水

给定一个数组来代表土堆,计算这个土堆能困住多少雨水。

思路:采用双指针。利用一个额外的变量来记录雨水的高度。问题在于雨水的高度是多少,显然雨水的高度应当是相邻的较小值,如果只用一个指针的话,我们是没办法记录较小值的,采用首尾指针可以避免该问题。将指针指向两头,则他必然大于等于雨水的高度值。(如果雨水高度大于它的话,岂不是就留出去了吗?),为了保证循环的有序性,一次只进行一步,从两头中选当前较小的值,这样可以保证雨水的高度是在上升的,将初始雨水高度设为0,从两者中取较大的值就是当前所在的雨水高度了。计算容积则用雨水高度减去当前高度即可。

你可能感兴趣的:(42.困住的雨水)