public int trap(int[] A) {
if (A == null || A.length == 0) return 0;
int res = 0;
int start = 0;
int end = A.length - 1;
int height = Math.min(A[start], A[end]);
//start end 记录最右边和最左边的位置
//height记录当前的高度,每次移动一位,更新最大的盛水量。
while (start < end) {
if (A[start] < A[end]) {
res += Math.max(height - A[start+1], 0);
height = Math.max(height, Math.min(A[start+1], A[end]));
++start;
}
else {
res += Math.max(height - A[end-1], 0);
height = Math.max(height, Math.min(A[start], A[end-1]));
--end;
}
}
return res;
}//该解法已经不能用语言表达了。。。。。