[LeetCode练习]接雨水
先记录一下答案: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; }