Advertisement
Guest User

PSDS max distance

a guest
Mar 31st, 2020
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.22 KB | None | 0 0
  1. import java.util.Random;
  2.  
  3. public class Solution {
  4.  
  5.     public static int maxDistance(int[] arr) {
  6.         int[] minIdxs = new int[arr.length];
  7.         minIdxs[0] = 0;
  8.         for (int i = 1; i < arr.length; ++i) {
  9.             minIdxs[i] = arr[i] < arr[minIdxs[i - 1]] ? i : minIdxs[i - 1];
  10.         }
  11.         int[] maxIdxs = new int[arr.length];
  12.         maxIdxs[arr.length - 1] = arr.length - 1;
  13.         for (int i = arr.length - 2; i >= 0; --i) {
  14.             maxIdxs[i] = arr[i] > arr[maxIdxs[i + 1]] ? i : maxIdxs[i + 1];
  15.         }
  16.         for (int i = 0, j = arr.length - 1; i <= j; ++i, --j) {
  17.             if (arr[minIdxs[i]] <= arr[maxIdxs[j]]) {
  18.                 return maxIdxs[j] - minIdxs[i];
  19.             }
  20.         }
  21.         return -1;
  22.     }
  23.  
  24.     public static void main(String[] args) {
  25.         System.out.println(maxDistance(new int[] {3, 5, 4, 2}));
  26.         Random random = new Random();
  27.         int[] arr = new int[10];
  28.         for (int i = 0; i < 10; ++i) {
  29.             for (int j = 0; j < 10; ++j) {
  30.                 arr[j] = Math.abs(random.nextInt()) % 20;
  31.                 System.out.print(arr[j] + " ");
  32.             }
  33.             System.out.println(" => " + maxDistance(arr));
  34.         }
  35.     }
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement