@szydlak:
Nie wiem co to jest, nie znam C#, .NET
dict.Add(A[i], new []{i,0});
Ale jak dodasz przy pierwszym wystąpieniu klucza int z jego pozycją to masz wszystko co potzrebujesz.
Każde natępne wystąpienie, drugie, trzecie, czwarte będzie jeszcze "bardziej na prawo" w tablicy od drugiego, więc nie interesuje cię jaka była 'metryka: 1-sze i 2-gie wystąpienie, bo trzecie ma na pewno bardziej oddalony index od drugiego wystąpienia.
@maszrum: wyjaśnił i podał rozwiązanie: "Zadanie polega na znalezieniu w zadanej tablicy maksymalnej odległości par liczb, które są sobie równe."
W zadaniu przykładzie result to int a nie tablica, więc interesuje nas wynik -- jedna wartość int.
Wracając do 2-go, 3-go wystąpienie.
Jeżeli dla tego konkretnego klucza, np. liczby 7 obecna odległość jest większa od wcześniej znalezionych 5-tek, to result = ta odległość.
Noc więcej ne trzeba zapamiętywać, tylko "max so far" kolejno dla elementów tablicy.
Analogia: jeden przebieg Selection Sort
Live:
w array mam teraz 7 z array[15]
HashMap ma już zapiany ten klucz i value zwraca 3 (pierwszy raz by array[3] = 7)
15-3 = 12 Nie potrzeba zapisywać pozycji tego wystąpienia 7-ki
Czy wcześniej dla np. klucza 5 dwie piątki były w 'odległości" result = 9?
Tak? Nasz result = 12 Nie potrzeba zapisywać jaka para liczb dała taki wynik
Nie? Cały czas 5-tli mają największy dystans.
Nic więcej nie trzeba trzymać w HashMap (lub jak się w C# mapa nazywa)