LeetCode42 Trapping Rain Water*

LeetCode42 Trapping Rain Water**

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

这道题关键点是是两边往中间遍历,记录当前第二高点secHeight,然后利用这个第二高点减去当前历经的柱子,剩下就装水容量了。
为什么是第二高点?因为两边比较,最高的点不用动,只移动第二高点。

这也是阿里2015实习生招聘附加题第三题

class Solution {
public:
    int trap(int A[], int n) {
        int secHeight = 0;
        int left = 0;
        int right = n-1;
        int area = 0;
        while(left < right){
            if(A[left] < A[right]){
                secHeight = max(A[left], secHeight);    // 找到次最高点
                area += secHeight - A[left];
                left ++;
            }else{
                secHeight = max(A[right], secHeight);
                area += secHeight - A[right];
                right --;
            }
            
        }
        return area;
        
    }
};