Un hash map (dizionario) fornisce lookups, inserimenti e cancellazioni in O(1) media. Scambiare O(n) memoria per velocità trasforma molti algoritmi O(n²) in O(n) sostituendo scansioni ripetute con lookups istantanei.
L'idea
Invece di cercare in una lista ogni volta, memorizza i valori visti in un hash map e verifica l'appartenenza in tempo costante.
Esempio: two-sum in O(n)
():
seen = {}
i, x (nums):
need = target - x
need seen:
(seen[need], i)
seen[x] = i
two_sum([, , , ], )
