RainWaterProblem
unknown
java
a year ago
1.8 kB
8
Indexable
class RainWaterProblem { public static int findWater(int[] arr) {//arr length take out ArraySize int arr_size = arr.length;//we created new array of same size //first array of left max height include itself int left[] = new int[arr_size];//first array of right max height include itself int right[] = new int[arr_size]; int water = 0; //Global varable store(OR)Initialize result left[0] = arr[0];//precompute left array//we are fill left side array for (int i = 1; i < arr_size; i++) left[i] = Math.max(left[i - 1], arr[i]); System.out.println("Left->"); for (int i = 0; i < arr_size; i++)//print left System.out.print(left[i] + ","); System.out.println(""); System.out.println("Right->");//print right array right[arr_size - 1] = arr[arr_size - 1];//precompute right array for (int i = arr_size - 2; i >= 0; i--) right[i] = Math.max(right[i + 1], arr[i]); for (int i = 0; i < arr_size; i++)//print Right System.out.print(right[i] + ","); System.out.println(""); System.out.println("Water->"); for (int i = 0; i < arr_size; i++) { water+= Math.min(left[i], right[i]) - arr[i];//calcu water with min of left&right build - buildHeight } return water; } public static void main(String[]args){ System.out.print("Building Height->\n"); int arr[] = new int[]{0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1}; for (int i = 0; i < arr.length; i++) System.out.print(arr[i] + ", "); System.out.println(" "); int ans = findWater(arr); System.out.println("Total water:"+ ans); } }
Editor is loading...