LeetCode 42. 接雨水


42. 接雨水

思路: 接水的值=min(左边最大,右边最大)-height[i]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:  //思路:ans += min(left, right)-height[i]
    int trap(vector<int>& height) {
        int size = height.size();
        if(size==0) return 0;
        vector<int> left(size,height[0]), right(size,height[size-1]);
        for(int i=1;i<size;i++)
            left[i] = max(left[i-1], height[i]);
        for(int i=size-2;i>=0;i--)
            right[i] = max(right[i+1], height[i]);
        int res = 0;
        for(int i=0;i<size;i++)
            res += min(left[i], right[i])-height[i];
        return res;
    }
};