Dado que son enteros tales que para todos , y la aparición de cada uno número excepto un número particular en es un número impar. Intenta encontrar el número cuya aparición es un número par.
Hay un algoritmo : clasificamos en , y en muchas piezas, cuyo valor de elementos es el igual, por lo tanto, podemos contar la ocurrencia de cada elemento.
Quiero encontrar un algoritmo para el peor de los casos: -hora-y- -espacio.
Suponiendo que y , por lo tanto, la clasificación de radix no es aceptable. Las operaciones binarias bit a bit son aceptables, por ejemplo, .
algorithms
search-algorithms
Yai0Phah
fuente
fuente
Respuestas:
Aquí hay una idea para un algoritmo simple; ¡solo cuenta todas las ocurrencias!
Con todo, esto le proporciona un algoritmo de tiempo lineal que puede usar (en el sentido de asignar) mucha memoria. Tenga en cuenta que poder acceder aleatoriamente a en tiempo constante independientemente de es crucial aquí.mC metro
Un adicional en el espacio es más difícil con este enfoque; No conozco ninguna estructura de datos del diccionario que ofrezca búsqueda de tiempo . Puede usar tablas hash para las que aquí hay implementaciones con tiempo de búsqueda esperado ( el tamaño de la tabla, el número de elementos almacenados) para que pueda obtener arbitrariamente bien con espacio lineal, en expectativa. Si todos los valores en asignan al mismo valor hash, estás jodido.O ( n ) O ( 1 ) O ( 1 + k / n ) norte k UN
fuente
Una solución casi trivial, que utiliza sin embargo el espacio , es utilizar un mapa hash. Recuerde que un mapa hash ha amortizado el tiempo de ejecución para agregar y buscar elementos.O ( 1 )Θ ( n ) O ( 1 )
Por lo tanto, podemos usar el siguiente algoritmo:
Asignar un mapa hash . Iterar sobre . Para cada elemento , aumente el número de ocurrencias observadas, es decir, .A i ∈ A H ( i ) + +H UN i ∈ A H( i ) + +
Itere a través del conjunto de claves del mapa hash y compruebe cuál de las claves tiene un recuento par de ocurrencias.
Ahora, este es un algoritmo simple que realmente no usa ningún truco grande, pero a veces incluso esto es suficiente. De lo contrario, es posible que desee especificar qué restricciones de espacio impone.
fuente