tema
Algoritmos e estruturas de dados
A maioria das entrevistas de algoritmo não quer que você invente algo novo — quer ver se você reconhece o padrão (hash map, dois ponteiros, BFS/DFS) e sabe justificar o custo em tempo e espaço. Antes de codar, diga em voz alta a complexidade da abordagem ingênua e por que dá pra melhorar.
Simuladores de Algoritmos e estruturas de dados
Principais perguntas de Algoritmos e estruturas de dados
ver todas →Ler notação Big-O: o que O(n log n) diz na prática
Big-O é a forma da curva de crescimento. O(n log n) escala; O(n²) colapsa quando a entrada cresce.
FácilJúniorQuando trocar um loop de busca por um hash map
Muitas buscas na mesma coleção → Set/Map (O(1) por busca) em vez de scan O(n). Custo: memória do índice.
FácilJúniorCenário: par que soma um alvo num array ordenado
Array ordenado → dois ponteiros (início/fim), O(n) tempo e O(1) espaço. Sem ordem → hash set, O(n)/O(n).
MédioPlenoRecursão, call stack e quando ela vira problema
Cada chamada empilha um frame; profundidade demais estoura a pilha e subproblemas repetidos explodem sem memoização.
MédioPlenoComplexidade de espaço e o que conta como 'in-place'
Espaço = memória extra além da entrada. In-place = O(1) extra, mexendo no próprio array (mas recursão custa pilha).
MédioPlenoCenário: detectar ciclo numa lista encadeada
Floyd (fast/slow pointers): rápido anda 2, lento anda 1; se há ciclo eles colidem. O(n) tempo, O(1) espaço.
DifícilSêniorBFS x DFS: quando cada um
BFS: nível a nível com fila — caminho mais curto em grafo não-ponderado, 'o que está perto'. DFS: fundo com pilha/recursão — existência de caminho, ciclo, topo-sort, backtracking.
MédioPlenoProgramação dinâmica: memoização x tabulação
PD: subestrutura ótima + subproblemas sobrepostos (recursão que recalcula os mesmos args). Memoização: recursão + cache (fácil, calcula só o necessário). Tabulação: tabela bottom-up (sem recursão, mais rápida, espaço reduzível).
DifícilSêniorCenário: maior subarray/substring com uma condição
Dois ponteiros formam uma janela válida; avança o fim, e quando invalida, avança o início até revalidar. Cada elemento entra/sai uma vez → O(n). Vale pra 'subarray contíguo com condição monotônica'.
MédioPlenoÁrvore binária de busca: quando O(log n) vira O(n)
Esquerda < nó < direita; busca descarta metade por passo → O(altura). Balanceada: altura ≈ log n. Dados ordenados numa BST simples viram lista torta → O(n). Daí AVL/rubro-negra.
MédioPlenoHeap e fila de prioridade: o caso 'top K'
Heap: acesso O(1) ao extremo, insert/pop O(log n). Top K de N: min-heap de tamanho K, troca o topo quando entra algo maior. O(N log K) tempo, O(K) espaço, funciona em stream.
DifícilSêniorOrdenação estável e por que isso importa
Estável = empates mantêm a ordem de entrada. Importa pra ordenar por critérios em cascata (por data, depois por departamento): o sort instável embaralha os empates da passada anterior.
MédioPlenoComplexidade amortizada: o array dinâmico
Cópias custam O(N) mas ficam cada vez mais raras; somadas dão O(N) pra N inserções → O(1) por inserção na média da sequência. Cuidado: um push isolado ainda pode ser O(N) (pico de latência).
DifícilSênior
Perguntas frequentes
O que os entrevistadores mais avaliam em algoritmos e estruturas de dados?
A maioria das entrevistas de algoritmo não quer que você invente algo novo — quer ver se você reconhece o padrão (hash map, dois ponteiros, BFS/DFS) e sabe justificar o custo em tempo e espaço. Antes de codar, diga em voz alta a complexidade da abordagem ingênua e por que dá pra melhorar.
Quanto tempo leva pra treinar algoritmos e estruturas de dados até me sentir pronto?
Depende do seu ponto de partida, mas a maioria sente diferença depois de 2-3 simulações completas com revisão das perguntas erradas — é aí que os padrões que se repetem em entrevista real ficam visíveis.