Trapping Rain Water
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.
- Time: O(n)
- Space: O(1)
public int trap(int[] height) {
int ret = 0;
int l = 0, maxL = 0, r = height.length - 1, maxR = 0;
while (l <= r) {
if (height[l] <= height[r]) {
if (height[l] >= maxL) {
maxL = height[l];
} else {
ret += maxL - height[l];
}
l++;
} else {
if (height[r] >= maxR) {
maxR = height[r];
} else {
ret += maxR - height[r];
}
r--;
}
}
return ret;
}