Una alternativa al enfoque HashSet sería:
Ordenar la matriz de entrada
Cuenta el número o valores no duplicados f en la matriz ordenada
asignar la matriz de salida
iterar sobre la matriz ordenada, la copia de los valores no duplicados a ella.
El enfoque HashSet es O(N)
en promedio suponiendo que 1) que asignar previamente la HashSet con el tamaño correcto y los valores 2) la (no duplicados) en el hash matriz de entrada más o menos uniformemente. (Pero si el valor hash es patológico, el peor caso es O(N**2)
)
El método de clasificación es O(NlogN)
en promedio.
El enfoque HashSet requiere más memoria en promedio.
Si está haciendo esto con poca frecuencia O para arreglos de entrada "bien comportados" realmente grandes, el enfoque HashSet es probablemente mejor. De lo contrario, podría ser un lanzamiento, que enfoque es mejor.
Utilice Mergesort modificado, eliminando los duplicados w que encontró, en lugar de agregar ambas copias a la lista. Se ejecuta en ** 'O (N * logN)' ** –