/*
用双指针l,r
l=0;r=n-1;
定义maxl为l左边的最高点
定义maxr为r右边的最高点
每次比较maxl与maxr 取最低点
*/
class Solution {
public:
int trap(vector<int>& height) {
int n=height.size();
if(!n) return 0;
int l=0;
int r=n-1;
int maxl=height[0];
int maxr=height[n-1];
int ans=0;
while(l<r)
{
maxl=max(maxl,height[l]);
maxr=max(maxr,height[r]);
if(maxl<maxr)
{
ans+=maxl-height[l];
l++;
}
else
{
ans+=maxr-height[r];
r--;
}
}
return ans;
}
};