# Leetcode 42. Trapping Rain Water

[hard]

Given `n` non-negative integers representing an elevation map where the width of each bar is `1`, compute how much water it can trap after raining.

Example 1:

`Input: height = [0,1,0,2,1,0,1,3,2,1,2,1]Output: 6Explanation: The above elevation map (black section) is represented by array [0,1,0,2,1,0,1,3,2,1,2,1]. In this case, 6 units of rain water (blue section) are being trapped.`

Example 2:

`Input: height = [4,2,0,3,2,5]Output: 9`

Constraints:

• `n == height.length`
• `0 <= n <= 3 * 104`
• `0 <= height[i] <= 105`

[Java]

1. Use two pointer, left and right to track the maxLeft and maxRight
2. four types of situation.
• Left side is lower, and left is larger than maxLeft -> update maxLeft -> move to next left
• Left side is lower, and left is lower than maxLeft -> add the different to answer -> move to next left
• Right side is lower, and right is lower than maxRight -> update maxRight -> move to next right
• Right side is lower, and right is lower than maxRight -> add the different t andswer -> move to next right