</>
Plan du cours — 23/24

Reconnaître le bon pattern

Intermédiaire

Face à un énoncé, repérez les signaux : ils désignent le pattern qui débloque le problème.

Signal dans l'énoncéPatternIdée clé
« Trouve deux éléments dont la somme vaut… », doublons, fréquences, « as-tu déjà vu… »HashmapStocker ce qu'on a vu pour répondre en O(1) au lieu de rescanner
Tableau ou chaîne triés, palindrome, paire à trouver, partition sur placeTwo pointersDeux indices qui convergent (ou avancent à des vitesses différentes) en O(n)
Sous-tableau ou sous-chaîne contigu, « plus long / plus court / maximum de taille k »Sliding windowFenêtre [gauche, droite] qu'on étend et rétrécit avec un état incrémental
Données triées, « premier index tel que… », minimiser un maximumRecherche binaireDiviser l'espace de recherche par deux, sur un tableau ou sur la réponse
Cycle dans une liste, milieu, inversion, fusion de listesListes chaînéesPointeurs lent/rapide, nœud sentinelle, réécriture soigneuse des liens
Parenthèses bien formées, « prochain plus grand », annuler/refairePileLe dernier ouvert est le premier fermé ; pile monotone
Parcours par niveaux, plus court chemin sans poidsFile (BFS)Traiter dans l'ordre d'arrivée
Arbre, hiérarchie, profondeur, chemin, plus proche ancêtre communArbres / BSTDFS récursif (diviser pour régner) ou BFS par niveaux
« Génère toutes les combinaisons / permutations / sous-ensembles »BacktrackingChoisir, explorer, annuler ; élaguer les branches impossibles
« Les k plus grands / fréquents / proches », médiane en flux, fusion de k listesHeapHeap de taille k pour garder les meilleurs candidats en O(n log k)
Réseau, grille, dépendances, composantes connexes, ordre des coursGraphesBFS pour le plus court chemin, DFS pour explorer, tri topologique pour les dépendances
Plus court chemin avec poids positifsDijkstraHeap qui extrait toujours le sommet le plus proche
« Nombre de façons », minimum/maximum avec sous-problèmes répétésProgrammation dynamiqueDéfinir l'état et la transition, mémoïser ou remplir un tableau
Intervalles à fusionner, planification, « le choix local suffit »Glouton / intervallesTrier d'abord, décider localement, prouver que le glouton est correct

Astuce : bloqué entre deux patterns ? Donnez d'abord la brute force et sa complexité, puis demandez-vous ce qu'elle recalcule inutilement : la réponse désigne généralement le bon pattern.