Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.For example, Given [0,1,0,2,1,0,1,3,2,1,2,1], return 6.
用两个指针维护左面最大和右面最大,每移动一次存水量加上当前最大减去当前高度知道两边相遇。。。。
class Solution {
public:
int trap(int A[], int n) {
int leftMax=0;
int rightMax=0;
int myMax=0;
int a=0;
int b=n-1;
while(a<b){
leftMax=max(leftMax,A[a]);
rightMax=max(rightMax,A[b]);
if(leftMax<rightMax){
myMax+=(leftMax-A[a]);
a++;
} else{
myMax+=(rightMax-A[b]);
b--;
}
}
return myMax;
}
};