Un hash map (diccionario) proporciona búsquedas, inserciones y eliminaciones en O(1) promedio. Reemplazar búsquedas repetidas con búsquedas instantáneas convierte muchos algoritmos O(n²) en O(n) a costa de O(n) de memoria.
La idea
En lugar de buscar una lista cada vez, almacena los valores vistos en un hash map y verifica la membresía en tiempo constante.
Ejemplo: two-sum en O(n)
():
seen = {}
i, x (nums):
need = target - x
need seen:
(seen[need], i)
seen[x] = i
two_sum([, , , ], )
