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;
}

results matching ""

    No results matching ""