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];
- }
- for (int i = 0, j = arr.length - 1; i <= j; ++i, --j) {
- if (arr[minIdxs[i]] <= arr[maxIdxs[j]]) {
- return maxIdxs[j] - minIdxs[i];
- }
- }
- return -1;
- }
- public static void main(String[] args) {
- System.out.println(maxDistance(new int[] {3, 5, 4, 2}));
- 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