"La pratique rend parfait. La répétition crée la maîtrise." — Tony Robbins
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.
- 🧠 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
| 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) | ⭐⭐ |
| 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ï | ⭐⭐⭐ |
| Jour | Algorithme | Difficulté |
|---|---|---|
| 21-22 | 📊 Tri fusion/rapide | ⭐⭐⭐ |
| 23 | 🔍 Recherche matrice triée | ⭐⭐ |
| 24 | 🗳️ Algo de Moore (élément majoritaire) | ⭐⭐ |
| 25 | ⭐⭐ | |
| 26 | 📈 Kadane (max subarray) | ⭐⭐⭐ |
| 27 | 🔄 Inversion tableau/string | ⭐⭐ |
| 28 | ➗ Algorithme de Horner | ⭐⭐ |
| 29 | 🎯 Two-Sum | ⭐⭐ |
| 30 | 🧮 Produit sauf soi-même | ⭐⭐⭐ |
| 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 | ⭐⭐⭐ |
| 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) | ⭐⭐⭐ |
| 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) | ⭐⭐⭐⭐ |
| 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* | ⭐⭐⭐⭐ |
| 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 | ⭐⭐⭐⭐ |
| Jour | Algorithme | Difficulté |
|---|---|---|
| 81 | ♕ N-Queens | ⭐⭐⭐⭐ |
| 82-84 | 🧩 Sudoku/Rat Maze/Word Search | ⭐⭐⭐⭐ |
| 85-87 | 🧬 Subsets/Parentheses/Hamiltonian | ⭐⭐⭐⭐ |
| 88-90 | 💰 Algorithmes gloutons | ⭐⭐⭐ |
| 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 | ⭐⭐⭐⭐⭐ |
Chaque défi suit cette structure claire et cohérente:
/day01-factorial/
├── README.md # Énoncé + explications théoriques
├── solution.js # Solution JavaScript moderne
└── test.js # Batterie de tests complets
Convention de nommage: dayXX-nom-algorithme (ex: day15-dijkstra)
| Principe | Description |
|---|---|
| 🔹 Pureté | |
| 🔹 Performance | |
| 🔹 Élégance | |
| 🔹 Robustesse |
# Cloner le dépôt
git clone https://github.com/gaye-lamine/100-days-algorithms-js.git
# Naviguer dans le projet
cd 100-days-algorithms-js
# Installer les dépendances
npm install # Pour les tests unitaires- 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!
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