DescripciónEncuentre el elemento que ocurre b veces en una una matriz de tamaño n * k + b
Dada una matriz de tamaño (n*k+b)
donde n elementos se producen k veces y un elemento se produce B veces, en otras palabras, hay son n+1
Elementos distintos. Dado que 0 < b < k
encuentra el elemento que ocurre b veces.
Mis soluciones intentadas
solución obvia van a utilizar hash, pero no va a funcionar si los números son muy grandes. La complejidad es
O(n)
Usando mapa para almacenar las frecuencias de cada elemento y después de atravesar un mapa para encontrar el elemento que ocurre b times.As Mapa de se implementan como árboles de altura equilibrada complejidad será
O(nlogn)
.
Ambos de mi solución fueron aceptadas pero el entrevistador quería una solución lineal sin utilizar hash y la pista que dio fue hacer que la altura de la constante de árbol en árbol en el que va a almacenar frecuencias, pero no soy capaz de figura la solución correcta todavía.
Quiero saber cómo resolver este problema en tiempo lineal sin hash?
EDIT:
muestra:
de entrada: n=2 b=2 k=3
aMatriz: 2 2 2 3 3 3 1 1
de salida: 1
¿y si b == k? –
Tenga en cuenta que su solución es 'O ((n * k + b) logn)', y no 'O (nlogn)' - dados los términos de la pregunta. – amit
¿Se puede dar una matriz de muestra con valores de muestra? –