Pregunta: Hay una matriz de tamaño 101 en la que hay números del 0 al 99 completos y solo existe un par de cualquier número entre 0 y 99. ¿Cuál es ese número duplicado?
Hay muchas formas de resolver este problema. Analicemos uno por uno con la complejidad del tiempo también.
- Usando la fórmula de suma de números naturales.
Simplemente encuentre la suma de los números naturales del 0 al 99, es decir, n (n + 1) / 2.
Esto nos da 99 * 100/2 = 4950.
Ahora la diferencia absoluta de 4950 y la suma de los elementos de la matriz nos dará el número duplicado.
Complejidad de tiempo: O (n) - Usando la clasificación
Ordenar nuestra matriz traerá nuestros elementos duplicados adyacentes entre sí. Con esto en mente, podemos atravesar la matriz y encontrar cualquier duplicado comparando los elementos en la matriz con sus adyacentes. Si descubriste que son iguales, tienes tu respuesta.
Complejidad de tiempo: O (nlgn)
Nota: También puede aplicar algoritmos de ordenación de tiempo lineal aquí ya que los datos están en límites fijos y, por lo tanto, logran una complejidad de O (n). - Hashing
También podemos usar hashing para resolver este problema. Mientras recorremos la matriz, mantendremos un HashSet que almacenará todos los números vistos antes de un elemento particular que estamos viendo en nuestro recorrido. Entonces, si en nuestra iteración alcanzamos un número x y descubrimos que también se mantiene en HashSet, eso significa que encontramos ese número x antes, por lo tanto, obtuvimos nuestra respuesta.
Complejidad del tiempo: O (n).
Puede haber muchas más formas de resolver esta pregunta, pero estas son solo algunas.
- ¿Por qué las personas priorizan el método estadístico para el sistema de reconocimiento de entidades de nombre a la coincidencia exacta algorítmica?
- ¿Qué tipo de ordenación usa C ++ para hacer múltiples clasificaciones?
- ¿Cómo puedo encontrar la ruta más larga de un gráfico bidireccional utilizando el algoritmo BFS?
- ¿Cómo funciona el algoritmo de sugerencia de seguimiento de Twitter?
- ¿Cuáles son algunos cuadriláteros que se usan en la vida real?
¡Feliz codificación! 🙂