Find the nth most frequent number in array.
(There is no limit on the range of the numbers)
Creo que podemosEncuentra el número N-ésimo más frecuente en la matriz
(i) almacenar la aparición de cada elemento utilizando mapas en C++
(ii) construir un Max-heap en tiempo lineal de las ocurrencias (o frecuencia) del elemento y luego extraer hasta el elemento N-ésimo, Cada extracción toma el tiempo de registro (n) para heapify.
(iii) obtendremos la frecuencia de la N-ésimo número más frecuente
(iv) entonces podemos lineal búsqueda entre los hash para encontrar el elemento que tiene esta frecuencia.
Tiempo - O (NlogN) espacio - O (N)
¿Hay algún método mejor?
Ver [Selección Algoritmo] (http://en.wikipedia.org/wiki/ Selection_algorithm) que permite seleccionar el Nth element from y unordered array en O (N). – salva
@salva - La pregunta es seleccionar n-ésimo número más FREQUENCY y no enésimo elemento. – user754657
@ user754657: sí, todavía se requiere el paso * i *, pero los pasos * ii *, * iii * y * iv * pueden reemplazarse por el algoritmo de selección que es O (N), dando como resultado una solución que es O (N) a nivel mundial. – salva