package com.interview.algorithms.array;
/**
* Created_By: stefanie
* Date: 14-10-31
* Time: 下午10:11
*/
public class C4_73_MaxDistance {
static class Pair{
int start;
int end;
int dist;
}
public static Pair find(int[] array){
boolean[] mark = new boolean[array.length];
Pair result = new Pair();
int min = Integer.MAX_VALUE;
for(int i = 0; i < array.length; i++){
if(array[i] < min){
mark[i] = true;
min = array[i];
result.start = i;
}
}
for(result.end = array.length - 1; result.end >= 0 && array[result.end] <= array[result.start]; result.end--);
for(int i = result.end - 1; i >= 0; i--){
if(mark[i] == false) continue;
if(array[i] < array[result.end]) result.start = i;
}
result.dist = result.end - result.start;
return result;
}
public static Pair findO2(int[] array){
Pair max = new Pair();
max.dist = 0;
for(int j = array.length - 1; j >0; j--){
for(int i = j - max.dist; i >= 0; i--){
if(array[i] < array[j] && j - i > max.dist){
max.start = i;
max.end = j;
max.dist = j - i;
}
}
}
return max;
}
}