Si el tamaño de una matriz es 101 y el rango de números es de 0 a 99, solo un número viene 2 veces. ¿Cuál es ese número?

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.

  1. 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)
  2. 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).
  3. 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.

¡Feliz codificación! 🙂

  1. Agregue todos los números del 0 al 99 y almacene en una variable, diga Suma (use la fórmula AP para esto, Sn = n * (n + 1) / 2)
  2. atravesar cada elemento del primero al último índice
  3. restar cada elemento atravesado de la suma
  4. Al final tendremos el número (en negativo)

Esto se puede implementar fácilmente

Gracias, para más programación visite

Si puedo replantear la pregunta: hay una matriz cuyo tamaño es 101 y los números del 0 al 99 están completos y solo existe un duplicado de cualquier número entre 0 y 99. ¿Cuál es el número duplicado?

Esto se puede resolver utilizando nuestras matemáticas de secundaria.

Suma de n números consecutivos

n (n + 1) / 2

En este caso 99 * 100/2 = 4950. Ahora recorra la matriz para encontrar la suma de elementos.

Resta ambos resultados y encontrarás el duplicado.

Espero que este enfoque ayude. Cualquier sugerencia o comentario bienvenido.

Según el tamaño mencionado para la matriz, hay 101 elementos en ella.

Según el rango de números mencionados que están contenidos en la matriz, {0–99} es decir, un total de 100 elementos.

Ahora, la suma de n números naturales =

[matemáticas] (n * (n + 1)) / 2 [/ matemáticas]

Aquí, n = 99

Almacene el resultado del cálculo anterior. Di s1

Agregue todos los elementos de la matriz y almacene el resultado. Di s2

El número repetido [matemáticas] = s2 – s1 [/ matemáticas]

Disfruta !! Cogimos al culpable 😉

More Interesting

Actualmente estoy en USACO Gold, pero apenas puedo resolver nada. ¿Qué debo hacer para ser más competente? ¿Dominar el oro es solo una cuestión de aprender toneladas de algoritmos, o necesita más que eso?

¿Cómo funciona un algoritmo de 'aprendizaje de representación'?

¿Qué es una explicación intuitiva de bosques aleatorios?

¿Cómo funciona el algoritmo de cubos de marcha?

¿Cómo funciona Git Merge?

¿Qué tan rápido irá un bote de semi desplazamiento de 24.5 m LWL x 6.4 m con una viga de 80 t con 1200 hp? ¿Tiene actualmente 2700 hp y pesa 85 t y va a 34 kts?

¿Por qué Java utiliza una implementación mediocre de hashCode para cadenas?

¿Cuáles son los algoritmos y las estructuras de datos que tengo que aprender para competir en Google Code Jam?

¿En qué situación podemos usar el algoritmo EM para encontrar la probabilidad?

¿De dónde viene el nombre perceptrón?

¿Cuál es la diferencia entre una matriz de caracteres y una cadena?

¿Es mejor hacer InterviewBit ahora (actualmente estoy en mi quinto semestre) o hacer SPOJ ahora y luego hacer InterviewBit solo 3 o 4 meses antes de las entrevistas? Solo conozco algunas estructuras de datos y algoritmos básicos. He hecho 40 problemas en SPOJ.

¿Cómo se puede incorporar un algoritmo adaptativo en un sistema operativo?

Cómo planificar 1-2 años de programación para convertirse en un experto en algoritmos, suponiendo que tenga un conocimiento de C ++ en la escuela secundaria

Cómo entender algoritmos complejos de aprendizaje automático