Учитывая массив int, каждый int отображается точно TWICE в массив. найти и вернуть int так, что эта пара int имеет max расстояние между собой в этом массиве.
например. [2, 1, 1, 3, 2, 3]
2: d = 5-1 = 4;
1: d = 3-2 = 1;
3: d = 6-4 = 2;
return 2
Мои идеи:
Используйте hashmap, ключ a[i]
, а значение - индекс. Сканируйте a[]
, поместите каждое число в хэш. Если число попадает дважды, используйте его индекс минус индекс старых чисел и используйте результат для обновления значения элемента в хэше.
После этого сканируйте хэш и верните ключ с наибольшим элементом (расстояние). это O (n) во времени и пространстве.
Как это сделать в O (n) времени и O (1) пространстве?