Leetcode 42. Trapping Rain Water
2 min readJul 31, 2021
[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: 6
Explanation: 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]
- Use two pointer, left and right to track the maxLeft and maxRight
- 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
3. return the answer
4. TC: O(n)