Manuel d'autorisation d'algorithme (LeetCode)
01. Présentation du projet
Un tutoriel pour expliquer les connaissances de base de "Algorithme et structure de données" , et une analyse détaillée de plus de 800 questions dans "LeetCode". Ce projet est facile à comprendre et il n'y a pas de grands progrès dans la réflexion. Certaines illustrations et exemples sont utilisés dans le projet pour faciliter la compréhension.
Ce didacticiel commence par les structures de données et les algorithmes de base, puis explique et analyse des sujets spécifiques pour différentes catégories de structures de données et d'algorithmes. Il permet aux lecteurs de maîtriser en profondeur les connaissances en algorithmique grâce à une combinaison d'« apprentissage théorique de base des algorithmes » et d'« apprentissage pratique de la programmation ».
Ce didacticiel utilise Python comme langage de programmation et nécessite que les apprenants possèdent des connaissances et une expérience de base en programmation Python.
02. Adresse du projet
Bienvenue "Star ️" et "Fork" dans le coin supérieur droit, c'est mon plus grand encouragement et mon plus grand soutien.
- Adresse GitHub : https://github.com/itcharge/LeetCode-Py
Un livre électronique en ligne "Algorithm Clearance Manual" qui prend en charge le mode sombre.
- Adresse e-book : https://algo.itcharge.cn
03. À propos de l'auteur
Je suis programmeur de développement iOS/macOS et je suis également étudiant en maîtrise à temps partiel (actuellement étudiant) au Beihang Software Institute. J'ai étudié les connaissances en algorithmique à l'université et j'ai participé à des concours ACM pendant trois ans, mais mon niveau était limité et je n'ai pas réussi à obtenir des résultats idéaux. Mais le plus grand gain pour moi de ces trois années d'expérience en ACM est que j'ai développé ma pensée logique et ma capacité à résoudre des problèmes pratiques. Cette capacité a jeté une base solide pour mon travail et mes études futurs.
J'ai commencé à résoudre des questions sur LeetCode chaque jour le 30 mars 2021. Le 8 juin 2022, j'avais résolu plus de 1 000 questions et réalisé plus de 800 solutions de problèmes. Travaillez dur pour résoudre plus de 1000, 1500+, 2000+ questions.
Répondez « Algorithm Check-in » dans le compte public « Programmer Charging Station » et vous serez ajouté au groupe du plan d'enregistrement par algorithme LeetCode pour former une équipe et vous enregistrer ensemble.
- Mot de passe pour entrer dans le groupe : enregistrement par algorithme
- Conditions requises pour rejoindre le groupe : moins de discussions, plus de partage et de modifications de notes.
04. Déclaration de droits d'auteur
- Ce didacticiel est sous licence internationale Creative Attribution-NonCommercial-NoDerivs (BY-NC-ND) 4.0.
- Les droits d'auteur de toutes les questions de ce didacticiel appartiennent à LeetCode et LeetCode China.
05. Table des matières du chapitre
00. Présentation
- Algorithmes et structures de données
- Complexité algorithmique
- Débuter avec LeetCode et stratégies
- Solutions aux problèmes LeetCode (tri lexicographique, plus de 850 solutions aux problèmes)
- Solutions aux problèmes LeetCode (triées par catégorie, liste de problèmes recommandée ★★★)
- Les 100 questions d'entretien les plus fréquemment posées par LeetCode (classées par catégorie)
- Les 200 questions les plus fréquemment posées lors des entretiens LeetCode (classées par catégorie)
01. Tableau
- Notions de base sur les tableaux
- Notions de base sur les tableaux
- Tableau des questions de base
- Algorithme de tri de tableaux
- tri à bulles
- tri par sélection
- tri par insertion
- Tri des collines
- tri par fusion
- Tri rapide
- Tri en tas
- tri par comptage
- tri au seau
- Tri par base
- Question de tri de tableau
- recherche binaire
- Connaissances en recherche binaire (1)
- Connaissances en recherche binaire (2)
- Question de recherche binaire
- Tableau double pointeur
- Connaissance des doubles pointeurs de tableau
- Question à double pointeur sur un tableau
- Fenêtre coulissante de tableau
- Connaissance des fenêtres coulissantes de tableau
- Question sur la fenêtre coulissante du tableau
02. Liste chaînée
- Connaissance de base des listes chaînées
- Connaissance de base des listes chaînées
- Questions de liste chaînée classiques
- Tri des listes chaînées
- Connaissances en matière de tri de listes chaînées
- Question de tri de liste chaînée
- Double pointeur de liste chaînée
- Connaissance des doubles pointeurs de liste chaînée
- Question à double pointeur de liste chaînée
03. Pile
- Bases de la pile
- Bases de la pile
- Empiler des questions de base
- pile monotone
- Connaissance de la pile monotone
- Question de pile monotone
04. File d'attente
- Bases de la file d'attente
- Bases de la file d'attente
- Questions de base en file d'attente
- file d'attente prioritaire
- Connaissance des files d'attente prioritaires
- question de file d'attente prioritaire
05. Table de hachage
- Connaissance des tables de hachage
- Question sur la table de hachage
06. Chaîne
- Bases des chaînes
- Bases des chaînes
- Questions classiques en chaîne
- Correspondance de chaîne à motif unique
- Algorithme de force brute
- Algorithme de Rabin Karp
- Algorithme KMP
- Algorithme de Boyer Moore
- Algorithme Horspool
- Algorithme du dimanche
- Question de correspondance de chaîne à modèle unique
- Correspondance de chaînes de motifs multiples
- Connaissance de l'arbre du dictionnaire
- Question sur l'arbre du dictionnaire
- Connaissance des machines automatiques AC
- Problème d'automate AC
- Connaissance du tableau de suffixes
- Question sur le tableau de suffixes
07. Arbre
- Arbre binaire
- Connaissance de base des arbres et des arbres binaires
- Connaissance de la traversée d'un arbre binaire
- Problème de traversée d'arbre binaire
- Connaissances en restauration d'arbres binaires
- Problème de restauration d'arbre binaire
- arbre de recherche binaire
- Connaissance de l'arbre de recherche binaire
- Question sur l'arbre de recherche binaire
- Arborescence des segments
- Connaissance de l'arborescence des segments
- Question sur l'arborescence des segments de ligne
- tableau arborescent
- Connaissance des tableaux d'arbres
- Question sur le tableau arborescent
- Et fouillez la collection
- et recherche de connaissances
- Et vérifie les questions
08. Théorie des graphes
- Connaissance de base des graphiques
- Définition et classification des graphiques
- Structure de stockage de graphiques et application du problème
- Parcours du graphique
- Recherche en profondeur de connaissances sur les graphiques
- Premier problème de recherche en profondeur pour les graphiques
- Recherche approfondie de connaissances dans les graphiques
- Première question de recherche sur la largeur du graphique
- Connaissance du tri topologique des graphes
- Question de tri topologique graphique
- Arbre couvrant du graphique
- Connaissance minimale du Spanning Tree pour les graphiques
- Problème d'arbre couvrant minimum pour les graphiques
- chemin le plus court
- Connaissance du chemin le plus court à source unique (1)
- Connaissance du chemin le plus court à source unique (2)
- Problème de chemin le plus court à source unique
- Connaissance multi-sources du chemin le plus court
- Problème de chemin le plus court multi-sources
- Connaissance du chemin le plus court
- Deuxième question de chemin court
- Connaissance des systèmes de contraintes différentielles
- Questions sur le système de contraintes différentielles
- graphe biparti
- Connaissance de base des graphes bipartis
- Questions de base sur les graphiques bipartis
- Connaissance maximale de correspondance des graphiques bipartis
- Algorithme hongrois
- Algorithme de Hopcroft-Karp
- Problème de correspondance maximale de graphe biparti
09. Algorithme de base
- Algorithme d'énumération
- Connaissance des algorithmes d'énumération
- Questions sur l'algorithme d'énumération
- algorithme récursif
- Connaissance des algorithmes récursifs
- Questions sur l'algorithme récursif
- algorithme diviser pour régner
- Diviser et conquérir les connaissances en matière d'algorithmes
- Questions sur l'algorithme Diviser pour régner
- Algorithme de retour en arrière
- Connaissance des algorithmes de backtracking
- Questions sur l'algorithme de retour en arrière
- algorithme gourmand
- Connaissance des algorithmes gourmands
- Question d'algorithme gourmand
- Opérations sur les bits
- Connaissance du fonctionnement des bits
- Questions sur le fonctionnement des bits
10. Programmation dynamique
- Bases de la programmation dynamique
- Bases de la programmation dynamique
- Questions de base sur la programmation dynamique
- Recherche mémorisée
- Connaissances en recherche de mémoire
- Questions de recherche de mémoire
- DP linéaire
- Connaissances DP linéaires (1)
- Connaissances DP linéaires (2)
- Question DP linéaire
- problème de sac à dos
- Connaissance du problème du sac à dos (1)
- Connaissance des problèmes de sac à dos (2)
- Connaissance des problèmes de sac à dos (3)
- Connaissance du problème du sac à dos (4)
- Connaissance des problèmes de sac à dos (5)
- questions sur le problème du sac à dos
- Intervalle DP
- Connaissance du DP par intervalles
- Question DP à intervalle
- Arbre DP
- Connaissance des arbres DP
- Question sur l'arbre DP
- DP de compression d'état
- Connaissances DP sur la compression d'état
- Question DP sur la compression d'état
- Compter DP
- Compter les connaissances DP
- Compter les questions du DP
- DP numérique
- Connaissances en DP numérique
- Questions sur la DP numérique
- Probabilité DP
- Connaissance des probabilités DP
- Questions de probabilité DP
- Optimisation de la programmation dynamique
- Optimisation de la pile monotone/de la file d'attente prioritaire
- Optimisation des pentes
- Optimisation des inégalités quadrilatérales
- Problème d'optimisation de la programmation dynamique
11. Contenu supplémentaire
- Chronologie de réalisation du contenu
12. Solutions aux problèmes LeetCode (860 questions complétées)