Frequência e Heap • Intermediario • 20 min
Os k elementos mais frequentes
Como contar frequência primeiro e depois escolher só os `k` maiores de forma eficiente.
Problemas de prática com walkthroughs, dicas e soluções.
Filtrar por tipo ou nivel
Frequência e Heap • Intermediario • 20 min
Como contar frequência primeiro e depois escolher só os `k` maiores de forma eficiente.
Pilha • Intermediario • 15 min
Como manter o mínimo atualizado em O(1) com uma estrutura auxiliar simples.
Pilha • Intermediario • 15 min
Como compor duas pilhas para simular fila e entender por que a transferencia sob demanda deixa o custo amortizado baixo.
Programação Dinamica • Intermediario • 18 min
Como modelar a escolha entre roubar ou pular cada casa respeitando a restrição de adjacência.
Busca • Intermediario • 22 min
Como adaptar [`busca binaria`](/pt-br/glossario/binary-search) quando a ordem continua la, mas foi quebrada por uma rotação.
Backtracking • Intermediario • 25 min
Como explorar caminhos em uma grade, marcar a escolha atual e desfazer a decisão ao voltar da busca.
Estruturas de Dados • Intermediario • 30 min
Como combinar [`mapa hash`](/pt-br/glossario/hash-map) com lista duplamente ligada para achar rápido e reorganizar por uso.
Grafos • Intermediario • 25 min
Como transformar pre-requisitos em grafo dirigido e detectar quando uma dependência volta para ela mesma.
Backtracking • Intermediario • 20 min
Como usar backtracking com contadores para podar prefixos inválidos antes que eles virem trabalho desperdicado.
Strings e Expansao • Intermediario • 22 min
Como perceber que todo palindromo tem um centro e usar isso para evitar uma solução de [`programacao dinamica`](/pt-br/glossario/dynamic-programming) mais pesada do que o necessário.
Programação Dinamica • Intermediario • 22 min
Como transformar segmentação de string em [`programacao dinamica`](/pt-br/glossario/dynamic-programming) de prefixos em vez de repetir a mesma tentativa em cada corte.
Arrays e Dois Ponteiros • Avancado • 28 min
Como perceber que a agua em cada posição depende dos maximos dos dois lados e comprimir isso em [`dois ponteiros`](/pt-br/glossario/two-pointers).
Janela Deslizante • Avancado • 30 min
Como transformar "contem tudo?" em uma condição de satisfação e contrair a janela só enquanto ela continua valida.
Matriz • Intermediario • 20 min
Como decompor uma rotação de matriz em transformações simples e fazer isso no próprio lugar com segurança.
Programação Dinamica • Intermediario • 25 min
Como transformar a comparação entre duas strings em uma tabela de subproblemas em vez de repetir escolhas de [`recursao`](/pt-br/glossario/recursion).
Matriz • Intermediario • 20 min
Como percorrer uma matriz em camadas usando limites claros em vez de depender de condições espalhadas.
Árvores • Avancado • 30 min
Como transformar uma árvore em string e reconstruí-la preservando os `nulls` que definem a forma.
Heap • Avancado • 25 min
Como manter a mediana sempre pronta separando metade de baixo e metade de cima com duas estruturas de [`heap`](/pt-br/glossario/heap).
Programação Dinamica • Intermediario • 22 min
Como sair da [`programacao dinamica`](/pt-br/glossario/dynamic-programming) em [`O(n²)`](/pt-br/glossario/o-n-quadrado) e chegar na ideia de menores finais possiveis com ajuda de [`busca binaria`](/pt-br/glossario/binary-search).
Grafos • Intermediario • 20 min
Como fazer cópia profunda de um grafo com ciclos, mantendo um mapeamento claro entre nós antigos e novos.
Árvores • Intermediario • 18 min
Como procurar uma subarvore de verdade comparando forma e valores, não só nos que parecem bater.
Árvores • Intermediario • 15 min
Como usar o percurso em ordem para explorar a ordem natural da árvore binaria de busca e parar assim que o contador chega em k.
Intervalos • Intermediario • 20 min
Como descobrir quantas reuniões ficam ativas ao mesmo tempo rastreando inicios e fins em ordem.
Grafos • Avancado • 30 min
Como extrair restrições entre letras a partir de palavras ordenadas e transformar isso em [`ordenacao topologica`](/pt-br/glossario/topological-sort).