Leetcode 42. Trapping Rain Water

Gary Chiang
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]

  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

3. return the answer

4. TC: O(n)

--

--

Gary Chiang
Gary Chiang

Written by Gary Chiang

CS new grad, 6 years experience related to supply chain management. Located in Bay area

No responses yet