Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Random;
- public class Solution {
- public static int maxDistance(int[] arr) {
- int[] minIdxs = new int[arr.length];
- minIdxs[0] = 0;
- for (int i = 1; i < arr.length; ++i) {
- minIdxs[i] = arr[i] < arr[minIdxs[i - 1]] ? i : minIdxs[i - 1];
- }
- int[] maxIdxs = new int[arr.length];
- maxIdxs[arr.length - 1] = arr.length - 1;
- for (int i = arr.length - 2; i >= 0; --i) {
- maxIdxs[i] = arr[i] > arr[maxIdxs[i + 1]] ? i : maxIdxs[i + 1];
- }
- int result = -1;
- for (int i = arr.length - 1, j = arr.length - 1; i >= 0 && j >= 0;) {
- if (minIdxs[i] != maxIdxs[j] && arr[minIdxs[i]] <= arr[maxIdxs[j]]) {
- result = Math.max(result, j - i);
- --i;
- } else {
- --j;
- }
- }
- return result;
- }
- public static void main(String[] args) {
- System.out.println(maxDistance(new int[]{6, 1, 5, 7, 4, 2}));
- System.out.println(maxDistance(new int[]{6, 1, 5, 7, 4, 3}));
- System.out.println(maxDistance(new int[]{6, 3, 5, 7, 4, 2}));
- System.out.println(maxDistance(new int[]{3, 5, 4, 2}));
- System.out.println(maxDistance(new int[]{34, 8, 10, 3, 2, 80, 30, 33, 1}));
- System.out.println(maxDistance(new int[]{9, 2, 3, 4, 5, 6, 7, 8, 18, 0}));
- System.out.println(maxDistance(new int[]{1, 2, 3, 4, 5, 6}));
- System.out.println(maxDistance(new int[]{6, 5, 4, 3, 2, 1}));
- Random random = new Random();
- int[] arr = new int[10];
- for (int i = 0; i < 10; ++i) {
- for (int j = 0; j < 10; ++j) {
- arr[j] = Math.abs(random.nextInt()) % 20;
- System.out.print(arr[j] + " ");
- }
- System.out.println(" => " + maxDistance(arr));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement