点击打开链接
//双指针
class Solution {
public:
int trap(vector<int>& height) {
int n = height.size();
int maxheight = 0, ret =0;
vector<int> container(n, 0);
for(int i=0; i<n; i++){
container[i] = maxheight;
maxheight = max(height[i], maxheight);
}
maxheight = 0;
for(int i=n-1; i>=0; i--){
container[i] = min(maxheight, container[i]); //这里的maxheight其实就是每个bar的右边最大高度
maxheight = max(maxheight, height[i]);
ret += container[i]-height[i]>0 ? container[i]-height[i]:0;
}
return ret;
}
};