>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
JavaScript

Como Parar de Resolver Milhares de Problemas do LeetCode e Organizar Algoritmos em 30 Padrões

Soa familiar: você abre o LeetCode, vê uma lista de três mil problemas, resolve cinco seguidos e percebe que sua cabeça está uma bagunça. Uma semana depois você se senta para um problema semelhante e novamente não sabe por onde começar. A maioria das pessoas tenta vencer entrevistas algorítmicas memorizando soluções específicas de cor. Mas o aprendizado decorativo desmorona na primeira formulação não padrão do entrevistador.

Recentemente encontrei um curso aberto chamado Babua DSA Patterns no repositório team-codebug. O autor do projeto, um desenvolvedor conhecido como CTO Bhaiya (Anuj Kumar, que trabalhou na Adobe e Intuit), propõe uma abordagem diferente. Em vez de resolver centenas de problemas de forma caótica, ele estruturou toda a preparação em 90 dias e a centralizou em torno de 30 padrões principais.

A essência da abordagem baseada em padrões

Quando você começa a trabalhar em problemas às dezenas, percebe uma coisa. Nove em cada dez perguntas de entrevista se resumem a um conjunto limitado de técnicas.

Por exemplo, se você precisa encontrar uma substring com uma condição específica ou um par de elementos em um array ordenado, quase certamente precisa de dois ponteiros ou de uma janela deslizante. Uma vez que você entende a mecânica de um padrão, a formulação específica de um problema deixa de ser intimidante. Você para de procurar uma solução única e simplesmente adapta um esqueleto de código familiar.

No repositório, o autor constrói exatamente esse sistema de coordenadas:

  • Cada padrão é explicado de um ponto de vista intuitivo, não de teoria seca
  • Cada modelo vem com 15–20 problemas práticos de dificuldade crescente
  • Existem notas prontas e guias de análise de casos extremos
  • Tabelas de repetição espaçada estão incluídas

Como o repositório e o plano de estudo são organizados

O repositório serve como um rastreador interativo para um desafio de 90 dias. O próprio processo de aprendizado é dividido por dia. Cada dia é dedicado a explorar um novo conceito ou a praticar problemas em um tópico já coberto.

A estrutura de diretórios é direta: cada dia recebe sua própria pasta (0_Day, 1_Day, 2_Day, e assim por diante), contendo notas, análises de código e links de vídeo.

O autor acompanha os tópicos com diagramas visuais:

DSA Questions Map

Entre os padrões cobertos estão tópicos básicos e avançados:

  • Dois Ponteiros (ponteiros clássicos para arrays e strings)
  • Ponteiros Rápido e Lento (técnica da tartaruga e da lebre para estruturas cíclicas e listas encadeadas)
  • Janela Deslizante (janela deslizante de tamanho fixo e dinâmico)
  • Reversões de listas encadeadas in-place
  • Busca de K elementos via heaps
  • Busca binária modificada

Exemplo: da ideia ao modelo de dois ponteiros

Para entender como a lógica é construída, vamos pegar o padrão de Dois Ponteiros. Muitos problemas de array podem ser resolvidos diretamente em O(n²) usando loops aninhados. Usar ponteiros se movendo um em direção ao outro ou na mesma direção reduz a complexidade para O(n).

Aqui está como o esqueleto dessa abordagem fica em Java:

public int[] twoSumSorted(int[] numbers, int target) {
    int left = 0;
    int right = numbers.length - 1;

    while (left < right) {
        int currentSum = numbers[left] + numbers[right];

        if (currentSum == target) {
            return new int[] { left + 1, right + 1 };
        } else if (currentSum < target) {
            left++; // сдвигаем левый указатель вправо, увеличивая сумму
        } else {
            right--; // сдвигаем правый указатель влево, уменьшая сумму
        }
    }

    return new int[] {};
}

No curso, o autor mostra como esse mesmo modelo com modificações mínimas se aplica à verificação de palíndromos, ao problema 3Sum ou à descoberta do recipiente com mais água. Em vez de manter cinco soluções diferentes na cabeça, você segura um padrão e as regras para o movimento dos ponteiros.

Repetição espaçada e rastreamento

Um dos problemas comuns ao se preparar para entrevistas é o esquecimento. Você pode trabalhar com árvores de segmentos em março, e em maio apagar completamente os detalhes de travessia da memória.

O projeto tem uma tabela de revisão separada (Revision Sheet) para isso. O autor recomenda a regra das quatro vezes para repetir cada tópico com intervalos crescentes. Para acompanhar o progresso, você é incentivado a fazer um fork do repositório e marcar os dias concluídos diretamente no seu próprio perfil.

DSA Progress Recap

A mosca na pomada: nuances que vale a pena conhecer

Antes de mergulhar na maratona de 90 dias, preste atenção ao formato dos materiais:

  1. O idioma principal das aulas em vídeo do YouTube é uma mistura de hindi e inglês (Hinglish). Se você absorve informações apenas em russo puro ou inglês acadêmico, assistir aos vídeos será um pouco difícil.
  2. O código e as notas de texto no repositório são escritos em Java e inglês, então você pode ler as notas sem problemas mesmo sem os vídeos.
  3. O projeto é focado em resultados práticos de entrevistas, então não há provas acadêmicas profundas de complexidades aqui.

Para quem este repositório é útil

Se você está se preparando para uma mudança de emprego, planejando passar por entrevistas técnicas em grandes empresas de tecnologia, ou simplesmente quer trazer ordem à sua base de conhecimento algorítmico, o repositório babua-dsa-patterns-course é uma excelente escolha como estrutura.

Você não precisa seguir o cronograma de 90 dias dia a dia. É suficiente pegar a lista de 30 padrões, olhar as pastas correspondentes no repositório para análises de problemas e resolver um conjunto no LeetCode na sua linguagem principal de trabalho. Essa abordagem sistemática economiza semanas de peregrinação caótica por arquivos de problemas.

Projetos relacionados