Preparação para entrevista de código
200 algoritmos para passar em qualquer entrevista técnica
Você conhece a sensação: a mente trava, o relógio corre e uma pergunta difícil decide tudo. A DEVSMAFIA organiza os padrões que realmente caem em entrevistas, para você entrar preparado, não no improviso.
Soma de Dois Números
Fácil, Arrays
Escreva uma função que recebe um array não vazio de inteiros distintos e um inteiro representando uma soma alvo. Se quaisquer dois números do array somarem a soma alvo, a função deve retorná-los em um array, em qualquer ordem. Se nenhum par somar o alvo, a função deve retornar um array vazio.
Entrada de Exemplo
array = [3, 5, -4, 8, 11, 1, -1, 6] targetSum = 10
Saída de Exemplo
[-1, 11] // os números podem estar em qualquer ordem
function twoNumberSum(array, targetSum) { const seen = new Set(); for (const num of array) { const complement = targetSum - num; if (seen.has(complement)) return [complement, num]; seen.add(num); } return [];}- Caso de Teste 1[3, 5, -4, 8, 11, 1, -1, 6], 10 [-1, 11]Passou
- Caso de Teste 2[4, 6], 10 [4, 6]Passou
- Caso de Teste 3[4, 6, 1], 5 [4, 1]Passou
- 200 problemas
- 11 categorias de algoritmos
- PT-BR + EN
- Acesso vitalício
Feito para a entrevista que muda sua carreira
Entrevistas em big tech não medem decoreba. Elas avaliam se você consegue decompor o problema, escolher a abordagem certa e se comunicar enquanto codifica.
Selecionamos 200 problemas originais em Fácil, Médio, Difícil e Muito Difícil, com a profundidade que você precisa para empresas como Google, Meta, Amazon e startups exigentes. Cada um traz casos de exemplo, testes ocultos, dicas progressivas e solução ótima com análise de complexidade.
Pratique em uma IDE real no navegador: JavaScript ou Python. Execute testes na hora. Revele dicas quando travar. Estude a solução quando quiser aprender de verdade, não quando estiver chutando.
O currículo completo
Cada problema é organizado por tema e dificuldade, para você saber sempre o que treinar a seguir.
31
Fácil
73
Médio
58
Difícil
38
Muito Difícil
Arrays
49
Strings
29
Recursão
13
Busca
7
Ordenação
8
Algoritmos Gulosos (Greedy)
7
Árvores Binárias de Busca
8
Árvores Binárias
14
Grafos
20
Listas Encadeadas
12
Programação Dinâmica
33
Fácil
31 problemas. Desbloqueie para praticar.
- 001Soma de Dois NúmerosArrays
- 002Validar SubsequênciaArrays
- 003Array de Quadrados OrdenadoArrays
- 004Vencedor do TorneioArrays
- 005Troco Não ConstruívelArrays
- 006Verificar PalíndromoStrings
- 007Cifra de CésarStrings
- 008Primeiro Caractere Não RepetidoStrings
- 009N-ésimo FibonacciRecursão
- 010Soma de ProdutoRecursão
- 011Busca BináriaBusca
- 012Encontrar os Três Maiores NúmerosBusca
- 013Bubble SortOrdenação
- 014Insertion SortOrdenação
- 015Tempo Mínimo de EsperaAlgoritmos Gulosos (Greedy)
- 016Foto da TurmaAlgoritmos Gulosos (Greedy)
- 017Bicicleta TandemAlgoritmos Gulosos (Greedy)
- 018Array MonotônicoArrays
- 019Transpor MatrizArrays
- 020Soma AcumuladaArrays
- 021Verificar AnagramaStrings
- 022Inverter PalavrasStrings
- 023Caractere Mais FrequenteStrings
- 024FatorialRecursão
- 025Selection SortOrdenação
- 026Valor Mais Próximo em uma BSTÁrvores Binárias de Busca
- 027Profundidade dos NósÁrvores Binárias
- 028Busca em ProfundidadeGrafos
- 029Remover Duplicatas de Lista EncadeadaListas Encadeadas
- 030Gerar DocumentoStrings
- 031Potência de DoisRecursão
Médio
73 problemas. Desbloqueie para praticar.
- 032Soma de Três NúmerosArrays
- 033Menor DiferençaArrays
- 034Mover Elemento para o FimArrays
- 035Array de ProdutosArrays
- 036Primeiro Valor DuplicadoArrays
- 037Mesclar Intervalos SobrepostosArrays
- 038Percurso em EspiralArrays
- 039Pico Mais LongoArrays
- 040Agrupar AnagramasStrings
- 041Maior Substring sem RepetiçãoStrings
- 042Conjunto das PartesRecursão
- 043PermutaçõesRecursão
- 044Quick SortOrdenação
- 045Merge SortOrdenação
- 046Validar BSTÁrvores Binárias de Busca
- 047Inverter Árvore BináriaÁrvores Binárias
- 048Somas dos RamosÁrvores Binárias
- 049Busca em LarguraGrafos
- 050Inverter Lista EncadeadaListas Encadeadas
- 051Algoritmo de KadaneProgramação Dinâmica
- 052Soma Máxima sem AdjacentesProgramação Dinâmica
- 053Número de Formas de Dar TrocoProgramação Dinâmica
- 054Mínimo de Moedas para o TrocoProgramação Dinâmica
- 055Maior IntervaloArrays
- 056Ordenar SubarrayArrays
- 057Elemento MajoritárioArrays
- 058Verificar Ciclo ÚnicoArrays
- 059Codificação por RepetiçãoStrings
- 060Buscar IntervaloBusca
- 061Busca Binária DeslocadaBusca
- 062QuickselectBusca
- 063Ordenação de Três NúmerosOrdenação
- 064Tamanhos dos RiosGrafos
- 065Mesclar Listas EncadeadasListas Encadeadas
- 066Remover o K-ésimo Nó do FimListas Encadeadas
- 067BST de Altura MínimaÁrvores Binárias de Busca
- 068K-ésimo Maior Valor em uma BSTÁrvores Binárias de Busca
- 069Árvore Binária BalanceadaÁrvores Binárias
- 070Caracteres Mínimos para as PalavrasStrings
- 071Endereços IP VálidosStrings
- 072Maior Substring PalíndromaStrings
- 073Ciclo em GrafoGrafos
- 074Soma de Listas EncadeadasListas Encadeadas
- 075Percurso na EscadaProgramação Dinâmica
- 076Número de Caminhos no GridProgramação Dinâmica
- 077Números FaltantesArrays
- 078Próximo Elemento MaiorArrays
- 079Cidade Inicial VálidaArrays
- 080Subarray de Soma ZeroArrays
- 081SemordnilapStrings
- 082Caracteres em ComumStrings
- 083Inverter Palavras na StringStrings
- 084Parênteses BalanceadosStrings
- 085Uma EdiçãoStrings
- 086Atribuição de TarefasAlgoritmos Gulosos (Greedy)
- 087Número Mínimo de SaltosProgramação Dinâmica
- 088Busca em Matriz OrdenadaBusca
- 089Mnemônicos de Número de TelefoneRecursão
- 090Heap SortOrdenação
- 091Travessia de BSTÁrvores Binárias de Busca
- 092Travessia por Nível da ÁrvoreÁrvores Binárias
- 093Ancestral Comum Mais NovoGrafos
- 094BicolorívelGrafos
- 095Nó do MeioListas Encadeadas
- 096Vista do Pôr do SolArrays
- 097Melhor AssentoArrays
- 098Retângulo de Área MínimaArrays
- 099Mesclar Arrays OrdenadosArrays
- 100Ordenar PilhaRecursão
- 101Gerar Tags DivRecursão
- 102Freelancing ÓtimoAlgoritmos Gulosos (Greedy)
- 103Construção de Trie de SufixosStrings
- 104Notação Polonesa ReversaArrays
Difícil
58 problemas. Desbloqueie para praticar.
- 105Distância de LevenshteinProgramação Dinâmica
- 106Subsequência Crescente de Soma MáximaProgramação Dinâmica
- 107Maior Subsequência ComumProgramação Dinâmica
- 108Diâmetro de Árvore BináriaÁrvores Binárias
- 109Problema da MochilaProgramação Dinâmica
- 110Soma de Quatro NúmerosArrays
- 111Recompensas MínimasArrays
- 112Área de ÁguaArrays
- 113Busca por ApartamentoArrays
- 114Conciliação de AgendasArrays
- 115Casamento de PadrãoStrings
- 116Menor Substring que ContémStrings
- 117Algoritmo de Knuth Morris PrattStrings
- 118Entrelaçamento de StringsProgramação Dinâmica
- 119Maior Subsequência CrescenteProgramação Dinâmica
- 120Lucro Máximo com K TransaçõesProgramação Dinâmica
- 121Empilhamento de DiscosProgramação Dinâmica
- 122Números no PiProgramação Dinâmica
- 123Submatriz de Soma MáximaProgramação Dinâmica
- 124Lançamentos de DadosProgramação Dinâmica
- 125Maior Cadeia de StringsProgramação Dinâmica
- 126Reconstruir BSTÁrvores Binárias de Busca
- 127BSTs IguaisÁrvores Binárias de Busca
- 128Soma Máxima de Caminho em Árvore BináriaÁrvores Binárias
- 129Encontrar Nós a Distância KÁrvores Binárias
- 130Remover IlhasGrafos
- 131Mínimo de Passagens na MatrizGrafos
- 132Palíndromo em Lista EncadeadaListas Encadeadas
- 133Deslocar Lista EncadeadaListas Encadeadas
- 134Intercalar Lista EncadeadaListas Encadeadas
- 135Travessia em Zigue-zagueArrays
- 136Sublinhar SubstringStrings
- 137Índice Igual ao ValorBusca
- 138Radix SortOrdenação
- 139Doce e SalgadoArrays
- 140Recipiente Com Mais ÁguaArrays
- 141Maior Substring BalanceadaStrings
- 142Gerente Comum Mais BaixoRecursão
- 143Melhores DígitosAlgoritmos Gulosos (Greedy)
- 144Consegue PularAlgoritmos Gulosos (Greedy)
- 145Medições AmbíguasProgramação Dinâmica
- 146Maximizar ExpressãoProgramação Dinâmica
- 147Engarrafamento de SucoProgramação Dinâmica
- 148Mínimo de Cortes para Partição em PalíndromosProgramação Dinâmica
- 149Quebra de PalavrasProgramação Dinâmica
- 150Formas de DecodificarProgramação Dinâmica
- 151Validar Três NósÁrvores Binárias de Busca
- 152Todas as Profundidades de NósÁrvores Binárias
- 153Comparar Travessia das FolhasÁrvores Binárias
- 154Árvore SimétricaÁrvores Binárias
- 155Dividir Árvore BináriaÁrvores Binárias
- 156Avaliar Árvore de ExpressãoÁrvores Binárias
- 157Maior IlhaGrafos
- 158Algoritmo de KruskalGrafos
- 159Busca de PalavraGrafos
- 160Troca de NósListas Encadeadas
- 161Reorganizar Lista EncadeadaListas Encadeadas
- 162Achatar Árvore BináriaÁrvores Binárias
Muito Difícil
38 problemas. Desbloqueie para praticar.
- 163Maior Retângulo Sob a SilhuetaArrays
- 164Encurtar CaminhoStrings
- 165Contar InversõesArrays
- 166Número de Topologias de Árvore BináriaProgramação Dinâmica
- 167Rainhas Que Não Se AtacamRecursão
- 168Conexão de CavalosGrafos
- 169Quadrado de ZerosArrays
- 170Conexões de AeroportosGrafos
- 171Tabuleiro de BoggleGrafos
- 172Algoritmo de DijkstraGrafos
- 173Menores à DireitaArrays
- 174Busca de Múltiplas StringsStrings
- 175Maior Substring ComumProgramação Dinâmica
- 176Estourar BalõesProgramação Dinâmica
- 177Maior QuadradoProgramação Dinâmica
- 178Maior RetânguloProgramação Dinâmica
- 179Maior Subsequência PalindrômicaProgramação Dinâmica
- 180Ordenação TopológicaGrafos
- 181Algoritmo A*Grafos
- 182Grafo Dois-Arestas-ConexoGrafos
- 183Contar QuadradosArrays
- 184Mania de RetângulosArrays
- 185Resolver SudokuRecursão
- 186Casamento de Expressão RegularProgramação Dinâmica
- 187Casamento com CuringasProgramação Dinâmica
- 188Escada de PalavrasGrafos
- 189Algoritmo de PrimGrafos
- 190Soma por CombinaçõesRecursão
- 191Máximo de Pontos em uma RetaArrays
- 192Acúmulo de Água em 2DArrays
- 193Máximo de Janela DeslizanteArrays
- 194Mediana de Dois Arrays OrdenadosArrays
- 195Mesclar K Listas OrdenadasListas Encadeadas
- 196Calculadora BásicaStrings
- 197Justificação de TextoStrings
- 198Remover Parênteses InválidosStrings
- 199Maior Sequência ConsecutivaArrays
- 200Soma Máxima de Três Subarrays sem SobreposiçãoArrays
Tudo que você precisa para chegar preparado
IDE no navegador
Escreva em JavaScript ou Python, execute testes de exemplo e envie para casos ocultos sem sair da página.
Dicas que ensinam
Receba orientação passo a passo quando travar, para aprender o padrão em vez de copiar a resposta.
Explicações completas
Veja a abordagem ótima, complexidade de tempo e espaço, e um passo a passo claro depois de tentar.
Português e inglês
Cada enunciado, dica e explicação está disponível em português brasileiro natural e em inglês.
Acompanhe seu progresso
Marque problemas como resolvidos, retome de onde parou e ganhe ritmo ao longo do tempo.
Como funciona
01
Escolha um problema
Filtre por categoria, dificuldade ou status e comece pelo seu nível.
02
Codifique e teste
Escolha JavaScript ou Python, use Executar nos testes visíveis e Enviar quando estiver pronto para a avaliação completa.
03
Aprenda e repita
Use dicas e soluções para fixar padrões e avance para o próximo desafio.
Um pagamento. Acesso total.
A biblioteca é sua para sempre
Sem assinatura. Pague uma vez e continue praticando pelo tempo que precisar.
- Todos os 200 problemas de algoritmos
- Dicas e soluções ótimas
- Editor e executor de testes no navegador (JavaScript e Python)
- Conteúdo bilíngue PT-BR / EN
- Progresso salvo na sua conta
Preço promocional. Por tempo limitado.
De R$ 197
R$ 97Pagamento único
Acesso vitalício
Você economiza R$ 100
Menos que o custo de uma única mentoria de algoritmos. Acesso para sempre.
Checkout seguro via Stripe. Acesso liberado na hora, sem assinatura.
Perguntas frequentes
É assinatura?
Não. Você paga uma vez e tem acesso vitalício à biblioteca completa.
Em qual linguagem eu codifico?
O workspace suporta JavaScript e Python nos 200 problemas. Troque de linguagem quando quiser. Seu código é salvo separadamente em cada uma. Cada problema inclui solução de referência nas duas linguagens.
Os problemas são copiados de outras plataformas?
Não. São problemas originais da DEVSMAFIA, organizados para cobrir os mesmos temas e níveis de dificuldade de entrevistas reais.
Quando recebo o acesso?
Logo após o checkout. Você será redirecionado para o catálogo de prática.
Funciona fora do Brasil?
Sim. Quem usa em inglês paga em USD. Usuários no Brasil veem preço em BRL.
A biblioteca é sua para sempre
Sem assinatura. Pague uma vez e continue praticando pelo tempo que precisar.
R$ 197R$ 97
Pagamento único, acesso vitalício
Você economiza R$ 100