双指针
原理:凹
与题目盛最多水的容器有相似之处
class Solution {
public:
int trap(vector<int>& height) {
int len=height.size();
if(len==0)return 0;
int l=0,r=len-1;
int total=0;
int MAX1=height[0],MAX2=height[r];
while(l+1<r)
{
if(MAX1>MAX2)
{
r--;
if(height[r]<MAX2)
total+=MAX2-height[r];
else MAX2=height[r];
}
else
{
l++;
if(height[l]<MAX1)
total+=MAX1-height[l];
else MAX1=height[l];
}
}
return total;
}
};