Alternatywą dla podejścia Hashset byłoby:
sortowania tablicy wejście
Policz liczbę o f nieduplikowanych wartości w sortowanej tablicy
przydzielenia macierz wynikową
iteracyjnego posortowanej tablicy kopiowania nieduplikowanych wartości do niego.
Podejście HashSet jest O(N)
średnio przy założeniu, że 1) przydzielenia do HashSet o odpowiednim rozmiarze i 2) (nieduplikowanych) Wartości w tablicy mieszania wejściowy w przybliżeniu równomiernie. (Ale jeśli wartość mieszania jest patologiczna, najgorszy przypadek to O(N**2)
!)
Podejście do sortowania wynosi średnio O(NlogN)
.
Podejście HashSet zajmuje średnio więcej pamięci.
Jeśli robisz to rzadko OR dla naprawdę dużych "dobrze zachowanych" tablic wejściowych, podejście HashSet jest prawdopodobnie lepsze. W przeciwnym razie może to być podejście, które jest lepsze.
Użyj zmodyfikowanego Mergesort, usuwając duplikaty w kura napotkała, zamiast dodawać obie kopie z powrotem do listy. Działa w trybie '' O (N * logN) '** –