42. 接雨水

题目:42. Trapping Rain Water
难度:困难
类型:双指针 动态规划
星级:五星推荐
题意:柱子的高度是由两边的最小值决定的,统计两边的最值,然后取最小的高度与原高度相减。

版本1

class Solution {
public:
    int trap(vector<int>& h) {
        
        int n = h.size();
        vector<int> l(n), r(n);
        for(int i = 0; i < n; i++) l[i] = i==0?h[i]:max(h[i], l[i-1]);
        for(int i = n-1; i >= 0; i--) r[i] = i==n-1?h[i]:max(h[i], r[i+1]);
        int res = 0;
        for(int i = 0; i < n; i++) res+= min(l[i], r[i]) - h[i];
        return res;
    }
};

你可能感兴趣的:(LeetCode经典编程题,双指针)