Dia 1 · O(1) e O(n)
Acesso direto é constante. Um loop que passa por todos os itens é linear.
Faça: Resolva 3 problemas fáceis e escreva a complexidade em um comentário antes do código.
Entrevista técnica
30 minutos por dia. No fim, a cola com 20 trechos de código e as frases para dizer na entrevista. Regra: diga a complexidade antes de tipar.
O caminhoachar os loopscontartempo e espaçoversão melhor
Quem fala a complexidade com segurança passa confiança na entrevista. Na mentoria, eu monto com você o plano de estudo para a vaga que você quer, ajusto o seu LinkedIn e te ensino a achar as melhores vagas.
Acesso direto é constante. Um loop que passa por todos os itens é linear.
Faça: Resolva 3 problemas fáceis e escreva a complexidade em um comentário antes do código.
Loop dentro de loop sobre os mesmos dados. 1.000 itens viram 1 milhão de passos.
Faça: Escreva a força bruta do Two Sum e diga por que ela é O(n²).
Cada passo corta o problema pela metade. 1 milhão de itens em cerca de 20 passos.
Faça: Implemente a busca binária do zero, sem olhar.
Mentoria
Big-O na ponta da língua já coloca você na frente de quem só decora solução. Na mentoria, eu monto com você o plano de estudo para a vaga que você quer, ajusto o seu LinkedIn e te ensino a achar as melhores vagas.
O custo de ordenar. Ordenar e depois percorrer continua O(n log n).
Faça: Resolva um problema que fica fácil depois de ordenar (ex.: Merge Intervals).
Hash map ou array extra do tamanho da entrada custa O(n) de memória.
Faça: Refaça o Two Sum com hash map e diga tempo e espaço.
Pegue 10 problemas que você já resolveu e diga a complexidade antes de rodar.
Faça: Grave 1 minuto explicando a complexidade de um problema. Ouça e refaça.
A cola: 20 trechos de código
01. arr[i]: tempo O(1), espaço O(1). Acesso direto por índice.
02. map.get(k) / set.has(x): tempo O(1) em média, espaço O(1). Hash: busca sem percorrer.
03. arr.push(x) / arr.pop(): tempo O(1) amortizado, espaço O(1). Mexe só no fim do array.
04. arr.shift() / arr.unshift(x): tempo O(n), espaço O(1). Mexe no início: reindexa todos.
05. for (const x of arr) { ... }: tempo O(n), espaço O(1). Passa uma vez por cada item.
06. arr.includes(x) / arr.indexOf(x): tempo O(n), espaço O(1). Busca linear escondida.
07. arr.map(...) / arr.filter(...): tempo O(n), espaço O(n). Cria um array novo.
08. [...arr] / arr.slice(): tempo O(n), espaço O(n). Copia o array inteiro.
09. for (a of A) {} for (b of B) {}: tempo O(n + m), espaço O(1). Loops em sequência somam.
10. for (a of A) for (b of A) {}: tempo O(n²), espaço O(1). Loops aninhados multiplicam.
11. for (a of A) for (b of B) {}: tempo O(n · m), espaço O(1). Dois tamanhos diferentes.
12. for (x of arr) if (arr.includes(x)): tempo O(n²), espaço O(1). includes dentro do loop.
13. const seen = new Set(arr): tempo O(n), espaço O(n). Troca memória por velocidade.
14. contar frequência com Map: tempo O(n), espaço O(n). Um passe + um hash.
15. busca binária em array ordenado: tempo O(log n), espaço O(1). Corta pela metade a cada passo.
16. while (n > 1) n = Math.floor(n / 2): tempo O(log n), espaço O(1). Divide por 2 até chegar em 1.
17. arr.sort((a, b) => a - b): tempo O(n log n), espaço depende da engine. Ordenar é sempre o gargalo.
18. ordenar + dois ponteiros: tempo O(n log n), espaço O(1) extra. O sort domina o loop.
19. DFS ou BFS em grafo: tempo O(V + E), espaço O(V). Visita cada vértice e aresta uma vez.
20. fib(n) recursivo sem memo: tempo O(2ⁿ), espaço O(n). Recalcula tudo. Com memo: O(n).
Frases para dizer na entrevista
“A força bruta é O(n²). Com hash map, cai para O(n) de tempo e O(n) de espaço.”
“O gargalo é o sort, então o total fica O(n log n).”
“Posso trocar memória por velocidade: guardo o que já vi em um Set.”
“Se a entrada já vier ordenada, uso busca binária e fica O(log n).”
“Antes de codar: vou confirmar o tamanho da entrada para escolher a abordagem.”
O júnior escreve o código e torce para o entrevistador não perguntar. Quem passa diz a complexidade antes de tipar e já sugere a otimização.
Como contar: ache os loops, veja quantas vezes cada um roda, some os que estão em sequência e multiplique os que estão um dentro do outro.
Big-O é a pergunta que mais aparece no teste técnico. A mentoria acelera esse caminho: plano de estudo para a vaga que você quer, LinkedIn que mostra o seu trabalho e as empresas certas para conversar.