You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
"La pratique rend parfait. La répétition crée la maîtrise." — Tony Robbins
🌟 Bienvenue dans cette aventure algorithmique!
Ce projet vous propose un défi stimulant: 100 algorithmes en 100 jours pour maîtriser JavaScript et développer vos compétences en algorithmique. Chaque jour apporte un nouveau défi, organisé par niveau de difficulté progressif.
🏆 Ce que vous allez gagner:
🧠 Compréhension approfondie des structures de données
⚡ Compétences optimisées en résolution de problèmes
📚 Maîtrise des concepts algorithmiques fondamentaux et avancés
💼 Portfolio impressionnant de solutions élégantes
📅 Programme des 100 jours
🔹 Jours 1-10: Fondamentaux
Jour
Algorithme
Difficulté
1
🔄 Factorielle (itératif/récursif)
⭐
2
📈 Fibonacci (récursif vs dynamique)
⭐
3
🔢 Pairs/impairs & somme des chiffres
⭐
4
🔤 Palindrome (texte/nombre)
⭐
5-6
🔍 Recherche linéaire/binaire
⭐⭐
7-9
📊 Tris basiques (bulles, sélection, insertion)
⭐⭐
10
🧮 PGCD/PPCM (Euclide)
⭐⭐
🔹 Jours 11-20: Récursivité & POO
Jour
Algorithme
Difficulté
11
📐 Puissance récursive
⭐⭐
12
🔄 Parcours matrice 2D
⭐⭐
13
🔡 Anagrammes
⭐⭐
14
🔤 Compteur de voyelles/consonnes
⭐
15
📋 Table de multiplication formatée
⭐
16-17
📏 Classes Point/Rectangle
⭐⭐
18
🔢 Crible d'Ératosthène
⭐⭐
19
🔀 Permutations de string
⭐⭐⭐
20
🗼 Tour de Hanoï
⭐⭐⭐
🔹 Jours 21-30: Algorithmes classiques
Jour
Algorithme
Difficulté
21-22
📊 Tri fusion/rapide
⭐⭐⭐
23
🔍 Recherche matrice triée
⭐⭐
24
🗳️ Algo de Moore (élément majoritaire)
⭐⭐
25
⚠️ Détection de doublons
⭐⭐
26
📈 Kadane (max subarray)
⭐⭐⭐
27
🔄 Inversion tableau/string
⭐⭐
28
➗ Algorithme de Horner
⭐⭐
29
🎯 Two-Sum
⭐⭐
30
🧮 Produit sauf soi-même
⭐⭐⭐
🔹 Jours 31-40: Matrices avancées
Jour
Algorithme
Difficulté
31
🔄 Rotation 90°
⭐⭐
32
🐍 Parcours serpentin
⭐⭐
33
✖️ Sommes diagonales
⭐⭐
34
🧩 DFS pour recherche de mot
⭐⭐⭐
35
🎲 Jeu de la vie (Conway)
⭐⭐⭐
36
📦 Run-length encoding
⭐⭐
37
❗ Zéros en factorielle
⭐⭐
38
🌀 Spiral Matrix
⭐⭐⭐
39-40
🪞 Opérations matrices
⭐⭐⭐
🔹 Jours 41-50: Traitement de texte
Jour
Algorithme
Difficulté
41-42
🔎 KMP/Boyer-Moore
⭐⭐⭐
43
📝 Suffix Array
⭐⭐⭐
44
🔤 Longest Common Prefix
⭐⭐
45
✨ Plus long palindrome
⭐⭐⭐
46-47
🧬 LCS/LRS
⭐⭐⭐
48
✏️ Edit Distance
⭐⭐⭐
49
📦 Compression RLE
⭐⭐
50
🌳 Trie (recherche de mot)
⭐⭐⭐
🔹 Jours 51-60: Structures de données
Jour
Algorithme
Difficulté
51
⬇️ Stack (pile)
⭐⭐
52
➡️ Queue avec stacks
⭐⭐⭐
53-54
⛓️ Listes chaînées
⭐⭐⭐
55
🔍 Détection de boucle (Floyd)
⭐⭐⭐
56
✂️ Suppression nième nœud
⭐⭐
57
🧩 Merge de listes triées
⭐⭐
58-60
🌳 Arbres binaires (BST)
⭐⭐⭐⭐
🔹 Jours 61-70: Graphes
Jour
Algorithme
Difficulté
61-62
🔍 DFS/BFS graphes
⭐⭐⭐
63
🔄 Détection de cycle
⭐⭐⭐
64
📊 Tri topologique
⭐⭐⭐
65
⚖️ Arbre équilibré
⭐⭐⭐
66
👑 Lowest Common Ancestor
⭐⭐⭐
67-70
🗺️ Dijkstra, Bellman-Ford, A*
⭐⭐⭐⭐
🔹 Jours 71-80: Programmation dynamique
Jour
Algorithme
Difficulté
71-72
📈 Fibonacci/Climbing Stairs
⭐⭐⭐
73-75
🎒 Knapsack/Subset Sum/Coin Change
⭐⭐⭐⭐
76
📏 LIS
⭐⭐⭐
77
✖️ Matrix Chain Multiplication
⭐⭐⭐⭐
78-80
⚒️ Problèmes avancés
⭐⭐⭐⭐
🔹 Jours 81-90: Backtracking
Jour
Algorithme
Difficulté
81
♕ N-Queens
⭐⭐⭐⭐
82-84
🧩 Sudoku/Rat Maze/Word Search
⭐⭐⭐⭐
85-87
🧬 Subsets/Parentheses/Hamiltonian
⭐⭐⭐⭐
88-90
💰 Algorithmes gloutons
⭐⭐⭐
🔹 Jours 91-100: Défis ultimes
Jour
Algorithme
Difficulté
91-92
📊 Inversions/Distance stations
⭐⭐⭐⭐
93-94
⏱️ Merge/Meeting Intervals
⭐⭐⭐
95
🪟 Sliding Window Max
⭐⭐⭐⭐
96
💧 Trapping Rain Water
⭐⭐⭐⭐
97
🏛️ Largest Rectangle
⭐⭐⭐⭐
98-99
📈 Median/K-th Largest
⭐⭐⭐⭐
100
🎯 Problème LeetCode Hard
⭐⭐⭐⭐⭐
🗂️ Architecture du projet
Chaque défi suit cette structure claire et cohérente:
Convention de nommage: dayXX-nom-algorithme (ex: day15-dijkstra)
✨ Règles d'or
Principe
Description
🔹 Pureté
Fonctions sans effets secondaires
🔹 Performance
Complexité algorithmique maîtrisée
🔹 Élégance
Code lisible et bien structuré
🔹 Robustesse
Tests complets avec cas limites
🚀 Lancez-vous !
# Cloner le dépôt
git clone https://github.com/gaye-lamine/100-days-algorithms-js.git
# Naviguer dans le projetcd 100-days-algorithms-js
# Installer les dépendances
npm install # Pour les tests unitaires
💡 Conseils
Pratiquez régulièrement: Consacrez un temps défini chaque jour
Écrivez avant de coder: Planifiez votre approche sur papier
Testez minutieusement: Couvrez les cas normaux et limites
Analysez la complexité: Notez la performance temporelle et spatiale
Complétez avec LeetCode ou Codewars pour booster votre apprentissage!
📝 Progression
Suivez votre avancement en cochant les cases:
Jours 1-10: Fondamentaux
Jours 11-20: Récursivité & POO
Jours 21-30: Algorithmes classiques
Jours 31-40: Matrices avancées
Jours 41-50: Traitement de texte
Jours 51-60: Structures de données
Jours 61-70: Graphes
Jours 71-80: Programmation dynamique
Jours 81-90: Backtracking
Jours 91-100: Défis ultimes
📄 License MIT • Créé avec 💙 par Lamine Gaye
About
Ce projet a pour objectif de renforcer ta logique algorithmique et tes compétences en résolution de problèmes, à raison d’un algorithme par jour pendant 100 jours. 🚀