>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
JavaScript

Comment arrêter de résoudre des milliers de problèmes LeetCode et organiser les algorithmes en 30 patterns

Ça vous parle : vous ouvrez LeetCode, voyez une liste de trois mille problèmes, en résolvez cinq d'affilée, et réalisez que votre tête est un chaos. Une semaine plus tard, vous vous asseyez devant un problème similaire et ne savez toujours pas par où commencer. La plupart des gens essaient de venir à bout des entretiens algorithmiques en mémorisant des solutions spécifiques par cœur. Mais l'apprentissage par cœur s'effondre dès la première formulation non standard de l'intervieweur.

Récemment, je suis tombé sur un cours ouvert appelé Babua DSA Patterns dans le dépôt team-codebug. L'auteur du projet, un développeur connu sous le nom de CTO Bhaiya (Anuj Kumar, qui a travaillé chez Adobe et Intuit), propose une approche différente. Au lieu de résoudre des centaines de problèmes de manière chaotique, il a structuré toute la préparation en 90 jours et l'a centrée autour de 30 patterns fondamentaux.

L'essence de l'approche par patterns

Une fois que vous commencez à travailler sur des problèmes par dizaines, vous remarquez une chose. Neuf entretiens sur dix se réduisent à un ensemble limité de techniques.

Par exemple, si vous devez trouver une sous-chaîne avec une condition spécifique ou une paire d'éléments dans un tableau trié, vous avez presque certainement besoin de deux pointeurs ou d'une fenêtre glissante. Une fois que vous comprenez la mécanique d'un pattern, le libellé spécifique d'un problème n'est plus intimidant. Vous cessez de chercher une solution unique et adaptez simplement un squelette de code familier.

Dans le dépôt, l'auteur construit exactement ce système de coordonnées :

  • Chaque pattern est expliqué d'un point de vue intuitif, pas une théorie aride
  • Chaque modèle est accompagné de 15 à 20 problèmes de pratique de difficulté croissante
  • Il y a des notes prêtes à l'emploi et des guides d'analyse des cas limites
  • Des tableaux de répétition espacée sont inclus

Comment le dépôt et le plan d'étude sont organisés

Le dépôt sert de tracker interactif pour un défi de 90 jours. Le processus d'apprentissage lui-même est divisé par jour. Chaque jour est dédié soit à l'exploration d'un nouveau concept, soit à la pratique de problèmes sur un sujet déjà couvert.

La structure du répertoire est simple : chaque jour obtient son propre dossier (0_Day, 1_Day, 2_Day, et ainsi de suite), contenant des notes, des explications de code et des liens vidéo.

L'auteur accompagne les sujets de diagrammes visuels :

DSA Questions Map

Parmi les patterns couverts se trouvent des sujets basiques et avancés :

  • Two Pointers (pointeurs classiques pour les tableaux et les chaînes)
  • Fast & Slow Pointers (technique de la tortue et du lièvre pour les structures cycliques et les listes chaînées)
  • Sliding Window (fenêtre glissante de taille fixe et dynamique)
  • Reversals de listes chaînées en place
  • Recherche d'éléments K via des tas
  • Recherche binaire modifiée

Exemple : de l'idée au modèle des deux pointeurs

Pour comprendre comment la logique est construite, prenons le pattern Two Pointers. De nombreux problèmes de tableaux peuvent être résolus directement en O(n²) en utilisant des boucles imbriquées. Utiliser des pointeurs qui se déplacent l'un vers l'autre ou dans la même direction réduit la complexité à O(n).

Voici à quoi ressemble le squelette de cette approche en 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[] {};
}

Dans le cours, l'auteur montre comment ce même modèle avec des modifications minimales s'applique à la vérification des palindromes, au problème 3Sum, ou à la recherche du contenant retenant le plus d'eau. Au lieu de garder cinq solutions différentes dans votre tête, vous maîtrisez un pattern et les règles de déplacement des pointeurs.

Répétition espacée et suivi

L'un des problèmes courants lors de la préparation aux entretiens est l'oubli. Vous pourriez travailler sur les arbres de segments en mars, et en mai avoir complètement effacé les détails de parcours de votre mémoire.

Le projet dispose d'un tableau de révision séparé (Revision Sheet) pour cela. L'auteur recommande la règle des quatre fois pour répéter chaque sujet avec des intervalles croissants. Pour suivre vos progrès, il vous encourage à forker le dépôt et à marquer les jours terminés directement dans votre propre profil.

DSA Progress Recap

La petite mouche du baignoire : des nuances qu'il vaut mieux connaître

Avant de vous lancer dans le marathon de 90 jours, faites attention au format des matériaux :

  1. La langue principale des leçons vidéo YouTube est un mélange d'hindi et d'anglais (Hinglish). Si vous n'absorbez l'information qu'en russe pur ou en anglais académique, regarder les vidéos sera quelque peu difficile.
  2. Le code et les notes textuelles du dépôt sont écrits en Java et en anglais, vous pouvez donc lire les notes sans aucun problème même sans les vidéos.
  3. Le projet est axé sur les résultats pratiques des entretiens, il n'y a donc pas de preuves académiques profondes des asymptotiques ici.

À qui ce dépôt sera utile

Si vous vous préparez à un changement d'emploi, prévoyez de passer des entretiens techniques dans les grandes entreprises technologiques, ou souhaitez simplement mettre de l'ordre dans votre base de connaissances algorithmiques, le dépôt babua-dsa-patterns-course est un excellent choix comme cadre.

Vous n'êtes pas obligé de suivre le calendrier de 90 jours jour après jour. Il suffit de prendre la liste des 30 patterns, de regarder dans les dossiers correspondants du dépôt pour les analyses de problèmes, et de résoudre un ensemble sur LeetCode dans votre langage de travail principal. Cette approche systématique fait gagner des semaines d'errance chaotique dans les archives de problèmes.

Projets similaires