Repaso
English

¿Qué devuelve esta función y cuáles son sus costes de tiempo y espacio?

def f(nums):
    seen = set()
    for n in nums:
        if n in seen:
            return n
        seen.add(n)
    return -1

Opciones

  1. El valor menor; O(n log n) de tiempo, O(1) de espacio
  2. El primer valor duplicado; O(n) de tiempo, O(n) de espacio (Opción correcta)
  3. El número de duplicados; O(n²) de tiempo, O(1) de espacio
  4. El último valor único; O(n) de tiempo, O(1) de espacio

Respuesta

El primer valor duplicado; O(n) de tiempo, O(n) de espacio

Por qué

Recorre la lista una vez y recuerda cada número en un set. El primer número que ya está en el set es el primer valor repetido, así que lo devuelve.

Un bucle, con comprobaciones en O(1) dentro: O(n) de tiempo. El set puede crecer hasta n elementos: O(n) de memoria extra.

Sin el set compararías cada pareja: O(n²).

Recuerda

Un set convierte '¿ya lo vi?' en O(1).

Términos clave

Practica esta pregunta en Repaso