Maximum Index Java
- Get link
- X
- Other Apps
PROGRAM TO PRINT THE MINIMUM DIFFERENCE BETWEEN MAXIMUM AND MINIMUM VALUES OF ARRAY.
class FindMaximum { /* Utility Functions to get max and minimum of two integers */ int max(int x, int y) { return x > y ? x : y; } int min(int x, int y) { return x < y ? x : y; } /* For a given array arr[], returns the maximum j-i such that arr[j] > arr[i] */ int maxIndexDiff(int arr[], int n) { int maxDiff; int i, j; int RMax[] = new int[n]; int LMin[] = new int[n]; /* Construct LMin[] such that LMin[i] stores the minimum value from (arr[0], arr[1], ... arr[i]) */ LMin[0] = arr[0]; for (i = 1; i < n; ++i) LMin[i] = min(arr[i], LMin[i - 1]); /* Construct RMax[] such that RMax[j] stores the maximum value from (arr[j], arr[j+1], ..arr[n-1]) */ RMax[n - 1] = arr[n - 1]; for (j = n - 2; j >= 0; --j) RMax[j] = max(arr[j], RMax[j + 1]); /* Traverse both arrays from left to right to find optimum j - i This process is similar to merge() of MergeSort */ i = 0; j = 0; maxDiff = -1; while (j < n && i < n) { if (LMin[i] < RMax[j]) { maxDiff = max(maxDiff, j - i); j = j + 1; } else i = i + 1; } return maxDiff; } /* Driver program to test the above functions */ public static void main(String[] args) { FindMaximum max = new FindMaximum(); int arr[] = { 9, 2, 3, 4, 5, 6, 7, 8, 18, 0 }; int n = arr.length; int maxDiff = max.maxIndexDiff(arr, n); System.out.println(maxDiff); } } OUTPUT
8
- Get link
- X
- Other Apps
Comments
Post a Comment