8 min

Two Sum

Encontra dois números que somam ao valor alvo usando hash map para busca O(1).

FácilO(n) / O(n)ArrayHash MapComplemento

Visualizador Interativo

Array[ 2, 7, 11, 15 ]|Target9Passo 1 / 2
i=0
+2
i=1
+7
i=2
+11
i=3
+15
Hash Map{ valor -> indice }
2 -> 0
Buscando complemento:9 - 2 = 7(nao existe)
Velocidade:1000ms
Historico de Passos
#0Verificando arr[0]=2. Complemento 7 nao encontrado. Adicionando 2 -> 0 ao hash map.

Como Funciona

Two Sum é um clássico de entrevistas. O problema: dado um array e um valor alvo, encontre dois números que somam a esse valor. A solução ingênua usa dois loops — O(n²). Mas com um hash map, resolvemos em O(n). A sacada é perceber que, para cada número, sabemos exatamente qual outro número precisamos: o complemento (target - número atual). Em vez de procurar esse complemento com outro loop, guardamos os números já vistos em um hash map. Busca em hash map é O(1).

O hash map transforma busca O(n) em O(1). É a diferença entre O(n²) e O(n).

Passo a Passo

  1. Cria um hash map vazio
  2. Para cada número, calcula o complemento (target - número)
  3. Verifica se o complemento está no hash map
  4. Se está, encontrou o par — retorna os índices
  5. Se não está, adiciona o número atual ao hash map
  6. Continua até encontrar ou terminar o array

Analise de Complexidade

⏱️Tempo
O(n)

Uma passada pelo array. Cada lookup no hash map é O(1).

Ver prova

n iterações × O(1) por iteração = O(n).

💾Espaco
O(n)

O hash map pode guardar até n elementos no pior caso.

🎯Melhor Caso
O(1)

Se os dois primeiros elementos formam o par.

⚠️Pior Caso
O(n)

O par está no final ou não existe.

Comparacao com Outros Algoritmos

AlgoritmoTempoEspacoMelhor Para
Two Sum (Hash Map)(atual)O(n)O(n)Array não ordenado
Two Sum (Dois Ponteiros)O(n)O(1)Array já ordenado
Two Sum (Força Bruta)O(n²)O(1)Entender o problema
Three SumO(n²)O(1)Encontrar triplas que somam zero

Dicas e Erros Comuns

  • Usar o mesmo elemento duas vezes (índices precisam ser diferentes)
  • Adicionar ao hash map antes de verificar (pode causar falso positivo)
  • Retornar valores em vez de índices
  • Esquecer que podem existir números negativos e zeros

Perguntas de Entrevista

Pratique respondendo a perguntas comuns de entrevistas tecnicas. Clique em uma pergunta para iniciar uma sessao de pratica com IA.

Implementacao

python
1def two_sum(nums, target):Definição
2 seen = {}Hash Map
3
4 for i, num in enumerate(nums):Enumerate
5 complement = target - numComplemento
6
7 if complement in seen:Busca
8 return [seen[complement], i]
9
10 seen[num] = iArmazenar
11
12 return NoneNão Encontrado
13