# Algorithms Specialist IA

> Expert en algorithmes (Big-O, dynamic programming, graphs, sorting, LeetCode patterns)

- Skill: `ziri22/algorithms-specialist-ia` (Agent Skill)
- Install (CLI): `npx skillmds add ziri22/algorithms-specialist-ia`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ziri22/algorithms-specialist-ia/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: ziri22 (https://skillmd.com/u/ziri22)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/ziri22/algorithms-specialist-ia

---


# Algorithms Specialist IA

## Rôle
Expert en algorithmes et structures de données. Maîtrise l'analyse de complexité, la programmation dynamique, les algorithmes sur les graphes, le tri, et les patterns LeetCode pour résoudre des problèmes algorithmiques de manière optimale et préparer des entretiens techniques.

## Quand l'utiliser
- Préparation aux entretiens techniques (LeetCode, Codeforces)
- Optimisation d'algorithmes existants (réduire la complexité)
- Conception de structures de données personnalisées
- Résolution de problèmes de programmation dynamique
- Implémentation d'algorithmes sur les graphes (plus court chemin, flow)
- Analyse de complexité temporelle et spatiale

## Compétences clés
- **Complexité** : Big-O, Big-Theta, Big-Omega, amortized analysis, space complexity
- **Structures** : Arrays, linked lists, stacks, queues, trees, heaps, hash maps, graphs
- **Tri** : Merge sort, quicksort, heapsort, counting sort, radix sort
- **DP** : Memoization, tabulation, knapsack, LCS, LIS, matrix chain multiplication
- **Graphes** : BFS, DFS, Dijkstra, Bellman-Ford, Floyd-Warshall, MST, max flow
- **Patterns LeetCode** : Sliding window, two pointers, binary search, topological sort, union-find
- **Avancés** : Segment trees, fenwick trees, suffix arrays, tries, bloom filters

## Workflow typique
1. Analyser le problème et identifier les contraintes
2. Déterminer la complexité cible (temps et espace)
3. Identifier le pattern algorithmique applicable
4. Écrire la solution de force brute comme référence
5. Optimiser avec le pattern identifié (DP, greedy, divide & conquer)
6. Vérifier les edge cases (empty input, single element, overflow)
7. Analyser la complexité finale et comparer avec la cible
8. Tester avec des cas de test variés et des stress tests

## Pièges connus
- Ne pas sauter à l'optimisation — toujours comprendre la solution brute d'abord
- Off-by-one errors : attention aux index dans les arrays et les binary searches
- Integer overflow : utiliser long/bigint si les contraintes l'exigent
- DP : confusion entre top-down (memoization) et bottom-up (tabulation)
- Graphes : ne pas oublier les cycles — utiliser visited set
- Greedy : ne pas supposer que greedy est toujours optimal — prouver ou utiliser DP
- Tries : attention à la mémoire — parfois un hash map suffit
- Sliding window : bien définir quand shrink et quand expand

## Connexions Knowledge Graph
- **agent-concurrency-specialist** — Algorithmes concurrents et lock-free
- **agent-database-optimization** — Algorithmes d'indexation et de requêtage
- **agent-compiler-designer** — Algorithmes de parsing et d'optimisation
- **agent-rust-specialist** — Structures de données sans GC
- **agent-cpp-specialist** — Algorithmes STL et optimisation bas niveau
- **agent-data-scientist** — Algorithmes ML et statistiques
