🚀 Algomonsta - algo speed run en Go
Un cours d'algorithmique structuré par patterns, conçu pour la préparation aux entretiens techniques et l'amélioration des compétences en résolution de problèmes.
Apprendre par patterns plutôt que par problèmes isolés
Reconnaître rapidement quel algorithme utiliser
Maîtriser Go pour les entretiens techniques
Progression structurée du débutant à l'expert
Cours
Pattern
Difficulté
Quand l'utiliser
01
Two Pointers
⭐
Tableaux triés, paires d'éléments
02
Sliding Window
⭐⭐
Sous-tableaux continus, fenêtres
03
Binary Search
⭐⭐
Recherche dans espaces ordonnés
Phase 2 - Structures de données 🟡
Cours
Pattern
Difficulté
Quand l'utiliser
04
Monotonic Stack
⭐⭐⭐
Maintenir un ordre spécifique
05
DFS on Trees
⭐⭐
Parcours d'arbres en profondeur
06
BFS on Graphs
⭐⭐⭐
Plus court chemin, niveau par niveau
Phase 3 - Algorithmes avancés 🔴
Cours
Pattern
Difficulté
Quand l'utiliser
07
Backtracking
⭐⭐⭐
Exploration exhaustive
08
Dynamic Programming
⭐⭐⭐⭐
Sous-problèmes optimaux
09
Advanced Patterns
⭐⭐⭐⭐
Techniques spécialisées
🏁 Guide de démarrage rapide
git clone < votre-repo>
cd algo-course
2. Commencer par le premier cours
# Lire le cours
cat courses/01-two-pointers.md
# Pratiquer les exercices
cd exercises/two-pointers/easy
📖 Lire le cours complet
🧠 Comprendre les exemples
✍️ Pratiquer les exercices easy → medium → hard
✅ Implémenter vos solutions
🔄 Réviser si nécessaire
➡️ Passer au cours suivant
📁 Organisation des fichiers
algo-course/
├── README.md # Ce fichier
├── courses/ # Cours théoriques
│ ├── 01-two-pointers.md
│ ├── 02-sliding-window.md
│ └── ...
└── exercises/ # Exercices pratiques
├── two-pointers/
│ ├── easy/
│ │ ├── two-sum-ii.md
│ │ ├── valid-palindrome.md
│ │ └── solution.go # Vos solutions
│ ├── medium/
│ └── hard/
└── ...
package main
import (
"fmt"
"sort"
)
// Structures de données courantes
type ListNode struct {
Val int
Next * ListNode
}
type TreeNode struct {
Val int
Left * TreeNode
Right * TreeNode
}
func main () {
// Vos tests ici
}
func max (a , b int ) int {
if a > b { return a }
return b
}
func min (a , b int ) int {
if a < b { return a }
return b
}
func abs (a int ) int {
if a < 0 { return - a }
return a
}
Semaine 1-2 : Fondamentaux
Semaine 3-4 : Structures de données
Semaine 5-6 : Algorithmes avancés
Dessinez le problème avant de coder
Identifiez le pattern avant d'implémenter
Testez avec plusieurs exemples
Analysez la complexité
Refactorisez votre code
Ne pas lire l'énoncé complètement
Coder sans comprendre le pattern
Ignorer les cas limites
Ne pas tester le code
Passer au suivant sans maîtriser
🔗 Ressources complémentaires
Pour toute question ou amélioration :
Créez une issue sur GitHub
Ajoutez vos propres exercices
Partagez vos solutions optimales