Compris ! Pour aligner votre index des 100 codes essentiels sur les besoins des entretiens FAANG tout en conservant la structure des dossiers sous push_swap/codes/, nous allons réorganiser les sections d à k pour mieux correspondre aux Structures de Données et Algorithmes (DSA) essentiels. Cette approche suit le principe 80/20, se concentrant sur les 20% des sujets qui couvrent 80% des besoins des entretiens FAANG, similaire à ce que propose GeeksforGeeks.

Voici la version révisée de votre index :


Top 100 Codes à Connaître

Pour faciliter votre apprentissage et votre préparation aux entretiens FAANG, voici une liste des 100 codes essentiels organisés par catégorie. Chaque élément est lié à une page Obsidian correspondante pour une navigation aisée.

a. Structures de Données

  1. Créer un nœud de liste chaînée (01-create-node.c)
  2. Insérer en tête de liste chaînée (02-insert-head.c
  3. Insérer en fin de liste chaînée (03-insert-tail.c)
  4. Supprimer le premier élément (04-delete-head.c)
  5. Supprimer un élément spécifique (05-delete-node.c)
  6. Rechercher un élément (06-search-node.c)
  7. Créer une pile (stack) (07-create-stack.c)
  8. Push and pop d’une pile (09-stack-pop.c)
  9. Créer une file (queue) (10-create-queue.c)
  10. Enqueue dans une file (11-queue-enqueue.c)
  11. Dequeue d’une file (12-queue-dequeue.c)
  12. Créer un arbre binaire (13-create-binary-tree.c)
  13. Rechercher dans un arbre binaire (15-binary-tree-search.c)
  14. Traversée in-order (16-binary-tree-inorder.c)
  15. Traversée pre-order (17-binary-tree-preorder.c)
  16. Traversée post-order (18-binary-tree-postorder.c)
  17. Créer un graphe (19-create-graph.c)
  18. Ajouter une arête dans un graphe 20-add-edge.c)
    1. Implémenter une table de hachage (21-hash-table.c)
    2. Insérer dans une table de hachage (22-hash-insert.c)
  19. Rechercher dans une table de hachage (23-hash-search.c)
  20. Supprimer dans une table de hachage (24-hash-delete.c)
  21. Créer une liste doublement chaînée (25-doubly-linked-list.c)

b. Algorithmes de Tri

  1. Tri par Insertion (26-insertion-sort.c)
  2. Tri Rapide (Quick Sort) (27-quick-sort.c)
  3. Tri par Fusion (Merge Sort) (28-merge-sort.c)
  4. Tri par Radix (Radix Sort) (29-radix-sort.c)
  5. Tri Bulle (Bubble Sort) (30-bubble-sort.c)
  6. Partitionnement pour Quick Sort (31-quick-partition.c)
  7. Fusionner deux listes pour Merge Sort (32-merge.c)
  8. Compter les bits pour Radix Sort (33-count-bits.c)
  9. Optimisation du Tri par Radix (34-radix-optimization.c)

c. Techniques Algorithmiques

  1. Recherche Binaire (35-binary-search.c)
  2. Algorithme BFS (Breadth-First Search) (36-bfs.c)
  3. Algorithme DFS (Depth-First Search) (37-dfs.c)
  4. Algorithme Dijkstra (38-dijkstra.c)
  5. Algorithme A* (39-a-star.c)
  6. Programmation Dynamique (40-dynamic-programming.c)
  7. Manipulation des Bits (41-bit-manipulation.c)
  8. Gestion des Pointeurs (42-pointer-management.c)
  9. Recursion Basique (43-recursion-basic.c)
  10. Recursion Avancée (44-recursion-advanced.c)
  11. Analyse de la Complexité Temporelle (45-time-complexity.c)
  12. Analyse de la Complexité Spatiale (46-space-complexity.c)

d. Structures de Données Avancées pour FAANG

  1. Tableaux Dynamiques (Dynamic Arrays) (47-dynamic-arrays.c)
  2. Heaps (Min Heap et Max Heap) (48-heap.c)
  3. Trie (Arbre Préfixe) (49-trie.c)
  4. Union-Find (Disjoint Set) (50-union-find.c)
  5. Segment Trees (51-segment-tree.c)
  6. Fenwick Trees (Binary Indexed Trees) (52-fenwick-tree.c)
  7. Skip Lists (53-skip-list.c)
  8. Bloom Filters (54-bloom-filter.c)
  9. Suffix Trees (55-suffix-tree.c)
  10. K-d Trees (56-kd-tree.c)
  11. B-Trees (57-b-tree.c)
  12. Red-Black Trees (58-red-black-tree.c)
  13. AVL Trees (59-avl-tree.c)
  14. Hash Tables avec Résolution de Collisions (60-hash-table-collisions.c)
  15. Bloom Filters Avancés (61-bloom-filter-advanced.c)
  16. Gestion des Indices pour Radix Sort (62-index-management.c)
  17. Arbres N-aires (63-n-ary-trees.c)
  18. Graphes Pondérés (64-weighted-graphs.c)
  19. Graphes Dirigés (65-directed-graphs.c)

e. Algorithmes de Recherche et Optimisation

  1. Recherche de Mot dans un Texte (KMP) (66-kmp.c)
  2. Algorithme de Rabin-Karp (67-rabin-karp.c)
  3. Recherche de Mot avec Trie (68-trie-search.c)
  4. Algorithme de Boyer-Moore (69-boyer-moore.c)
  5. Algorithme de Floyd pour Détection de Cycle (70-floyd-cycle.c)
  6. Problème des N-Reines (71-n-queens.c)
  7. Problème du Voyageur de Commerce (TSP) (72-tsp.c)
  8. Problème de la Sac à Dos (Knapsack) (73-knapsack.c)
  9. Problème des Chemins les Plus Courts (74-shortest-path.c)
  10. Problème de la Plus Longue Sous-Séquence Croissante (LIS) (75-lis.c)
  11. Problème des Parenthèses Valides (76-valid-parentheses.c)
  12. Problème de la Plus Grande Somme Contiguë (Kadane) (77-kadane.c)
  13. Problème des Paires de Somme Ciblée (78-two-sum.c)
  14. Problème de l’Anagramme (79-anagram.c)
  15. Problème du Sous-Tableau Maximum (80-maximum-subarray.c)

f. Algorithmes de Graphes Avancés

  1. Algorithme de Ford-Fulkerson pour le Flux Maximum (81-ford-fulkerson.c)
  2. Algorithme de Tarjan pour les Composantes Fortement Connexes (82-tarjan-cc.c)
  3. Algorithme de Kosaraju pour les Composantes Fortement Connexes (83-kosaraju-cc.c)
  4. Algorithme de Prim Optimisé avec Heaps de Fibonacci (84-prim-fibonacci.c)
  5. Algorithme de Johnson pour les Chemins les Plus Courts (85-johnson-shortest-path.c)
  6. Topological Sorting (86-topological-sort.c)
  7. Détection de Cycles dans un Graphe (87-cycle-detection.c)
  8. Algorithme de Bellman-Ford (88-bellman-ford.c)
  9. Algorithme de Floyd-Warshall (89-floyd-warshall.c)
  10. Algorithme A Optimisé* (90-a-star-optimized.c)

g. Programmation Dynamique et Greedy

  1. Programmation Dynamique Avancée (91-advanced-dp.c)
  2. Memoization avec Structures de Données (92-memoization-structures.c)
  3. Algorithmes Gloutons (Greedy Algorithms) (93-greedy-algorithms.c)
  4. Optimisation de l’Espace et du Temps (94-space-time-optimization.c)
  5. Techniques de Pruning Avancées (95-advanced-pruning.c)
  6. Optimisation de la Mémoire (96-memory-optimization.c)
  7. Optimisation des Rotations et Reverse Rotations (97-rotation-optimization.c)
  8. Minimisation des Opérations de Swap (98-minimize-swap.c)
  9. Optimisation des Séquences d’Opérations Simultanées (99-optimize-simultaneous.c)
  10. Algorithme de Tri Hybride (100-hybrid-sort.c)