Saltar al contenido

Proyecto: encuentra repetidos rápido

Python · Unidad 22: Complejidad

Para saber si una lista tiene repetidos, la forma lenta compara cada número con todos los de adelante: con 4 números son 6 comparaciones, con 1000 son casi medio millón.

Con un conjunto basta una pasada, porque preguntar si ya lo viste es O(1).

nums = [4, 9, 1, 9]
n = len(nums)
pasos = 0
for i in range(n):
    for j in range(i + 1, n):
        pasos += 1
print(pasos)

Imprime

6

Ejercicios de esta lección

Se hacen en la app, que los corrige al momento y explica por qué.

  1. 1. Completa el código

    Completa para que la función avise cuando un número ya había salido antes.

  2. 2. Escribe el código

    Escribe hay_repetido(nums): regresa True si algún número aparece dos veces y False si no. Usa un conjunto para recordar los que ya viste, en una sola pasada.

  3. 3. Escribe el código

    Ahora demuéstralo contando. revisar(nums) regresa una lista con dos cosas: si hay repetido, y cuántos números miró antes de contestar. Suma un paso por cada número que mires y sal en cuanto encuentres el repetido.

Hacer esta lección

Se abre en el navegador. Esta lección es del plan completo; la primera unidad de cada curso es gratis.

Ver todas las lecciones →