Um hash map (dicionário) oferece O(1) em média para buscas, inserções e exclusões. Trocando O(n) de memória por velocidade, muitos algoritmos O(n²) são transformados em O(n) substituindo varreduras repetidas por buscas instantâneas.
A ideia
Em vez de pesquisar uma lista cada vez, armazene valores já vistos em um hash map e verifique a associação em tempo constante.
Exemplo: two-sum em O(n)
():
seen = {}
i, x (nums):
need = target - x
need seen:
(seen[need], i)
seen[x] = i
two_sum([, , , ], )
