Я очень сомневаюсь, что это «правильный» ответ, но если бы мне дали эту проблему на работе, я бы сделал быструю сортировку по линиям сортировки по значению, а затем по индексу. Затем я бы прошел через мой упорядоченный массив и для каждого значения взял первый и последний индекс. Это станет кандидатом на максимальное расстояние. Каждый раз, когда я сталкивался с новым значением, я сравнивал его с моим текущим максимальным расстоянием, а затем сохранял только максимальное значение. Таким образом, время выполнения будет
сортировка + прогулка = всего
N Log N + N = N Log N
Ex .:
Значения в неупорядоченном массиве:
1,2,3,1,5,3,3,3
1,1,2,3,3,3,3,5 = значение
0,3,1,2,5,6,7,4 = индекс
1 = максимум 3-0 = 3
2 = х
3 = максимум 7-2 = 5
Макс. 5
Имейте в виду, что это, вероятно, НЕ ответ из учебника, но он все еще работает в N Log N, так что я бы использовал его на работе без всяких сомнений для чего-либо менее миллиона элементов.
Задумывались ли вы о других возможных ответах на проблему? Как насчет способов улучшить это?