Tapping Rain Water , but small twist
Anonymous User
87

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]);
        }
    }
    
}
Comments (2)