42. Trapping Rain Water

shashi
2 min readApr 12, 2024

--

Solved
Hard
Topics
Companies
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. 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
1 <= n <= 2 * 104
0 <= height[i] <= 105

class Solution {

/**Time : O(n^2) Space : O(1) */
public int trap1(int[] height) {
int water=0;
for(int i=0;i<height.length;i++){
int lMax= 0, rMax=0,l=i, r=i;

while(l>=0) lMax=Math.max(lMax, height[l--]);
while(r<height.length) rMax=Math.max(rMax, height[r++]);

water+=Math.min(lMax,rMax)-height[i];
}
return water;
}

/**Time :O(n) Space :O(1) */
public int trap(int[] height) {
int water=0, l=0, r=height.length-1, lMax=height[l], rMax=height[r];
while(l<=r){
lMax=Math.max(lMax, height[l]);
rMax=Math.max(rMax, height[r]);

water += lMax>rMax ? rMax-height[r--] : lMax-height[l++];
}
return water;
}
}





/**
42. Trapping Rain Water
Solved
Hard
Topics
Companies
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
1 <= n <= 2 * 104
0 <= height[i] <= 105

*/

--

--

shashi
shashi

No responses yet