先记录一下答案:https://www.jianshu.com/p/49b5cf98b216
public int trapRainWater(int[] A) {
if(A == null || A.length < 3)
return 0;
//两根指针一头一尾向中间进发
int left = 0;
int right = A.length-1;
//两个变量存储左右两边的局部最大高度
int leftMax = 0;
int rightMax = 0;
int area = 0;
while(left <= right) {
leftMax = Math.max(leftMax, A[left]);
rightMax = Math.max(rightMax, A[right]);
//小的那边可以存水
if(leftMax <= rightMax) {
if(leftMax > A[left])
area += leftMax - A[left];
left++;
}
else {
if(rightMax > A[right])
area += rightMax - A[right];
right--;
}
}
return area;
}