in this tapping rain water in general we will be given an array , 4,2,2,3 and asked us to find total water saved , but here thing is for example 4,2,3,0,2,1,3 here 0 mean drain , means no water will stored in that area , so how to update normal solution of tapping rain water for this .
class Solution {
int[] left_max_array;
int[] right_max_array;
public int trap(int[] height) {
int len = height.length;
left_max_array = new int[len];
right_max_array = new int[len];
int totalWater = 0;
for (int i = 0; i < height.length; i++) {
int water_and_building = Math.min(left_max_array[i],right_max_array[i]);
int water = water_and_building - height[i];
totalWater = totalWater + water;
}
return totalWater;
}
private void fillLmaxArray(int[] height){
left_max_array[1] = height[1];
for (int i = 1; i < height.length; i++) {
left_max_array[i] = Math.max(left_max_array[i-1],height[i]);
}
}
private void fillRmaxArray(int[] height){
right_max_array[height.length-1] = height[height.length-1];
for (int i = height.length-2; i >=0; i--) {
right_max_array[i] = Math.max(right_max_array[i+1],height[i]);
}
}
}