Algorithmus-Freigabehandbuch (LeetCode)
01. Projekteinführung
Ein Tutorial zur Erläuterung der Grundkenntnisse zu „Algorithmus und Datenstruktur“ und eine detaillierte Analyse von über 800 Fragen in „LeetCode“. Dieses Projekt ist leicht zu verstehen und es gibt keine großen Denksprünge. Im Projekt werden einige Abbildungen und Beispiele verwendet, um das Verständnis zu erleichtern.
Dieses Tutorial beginnt mit grundlegenden Datenstrukturen und Algorithmen und erklärt und analysiert dann spezifische Themen für verschiedene Kategorien von Datenstrukturen und Algorithmen. Durch eine Kombination aus „grundlegendem theoretischem Erlernen von Algorithmen“ und „praktischem Programmiererlernen“ können Leser das Algorithmenwissen gründlich erlernen.
Dieses Tutorial verwendet Python als Programmiersprache und setzt voraus, dass die Lernenden über Grundkenntnisse und Erfahrung in der Python-Programmierung verfügen.
02. Projektadresse
Willkommen „Star️“ und „Fork“ in der oberen rechten Ecke, das ist meine größte Ermutigung und Unterstützung.
- GitHub-Adresse: https://github.com/itcharge/LeetCode-Py
Ein Online-E-Book „Algorithm Clearance Manual“, das den Dunkelmodus unterstützt.
- E-Book-Adresse: https://algo.itcharge.cn
03. Über den Autor
Ich bin ein iOS/macOS-Entwicklungsprogrammierer und außerdem Teilzeit-Masterstudent (derzeit studiere ich) am Beihang Software Institute. Ich habe am College Algorithmenwissen studiert und drei Jahre lang an ACM-Wettbewerben teilgenommen, aber mein Niveau war begrenzt und ich konnte keine optimalen Ergebnisse erzielen. Der größte Gewinn für mich aus diesen drei Jahren ACM-Erfahrung besteht jedoch darin, dass ich mein logisches Denken und meine Fähigkeit, praktische Probleme zu lösen, entwickelt habe. Diese Fähigkeit hat eine solide Grundlage für meine zukünftige Arbeit und mein Studium gelegt.
Am 30. März 2021 begann ich, jeden Tag Fragen auf LeetCode zu lösen. Bis zum 8. Juni 2022 hatte ich über 1.000 Fragen gelöst und über 800 Problemlösungen abgeschlossen. Arbeiten Sie hart, um mehr als 1000, 1500, 2000 Fragen zu lösen.
Antworten Sie auf „ Algorithmus-Check-in “ im öffentlichen Konto „Programmer Charging Station“ und Sie werden der LeetCode-Algorithmus-Check-in-Plangruppe hinzugefügt, um ein Team zu bilden und gemeinsam einzuchecken.
- Passwort zum Betreten der Gruppe: Algorithmus-Check-in
- Voraussetzungen für den Beitritt zur Gruppe: weniger chatten, mehr teilen und Notizen ändern.
04. Copyright-Erklärung
- Dieses Tutorial ist unter einer Creative Attribution-NonCommercial-NoDerivs (BY-NC-ND) 4.0 International License lizenziert.
- Das Urheberrecht aller Fragen in diesem Tutorial liegt bei LeetCode und LeetCode China.
05. Kapitel Inhaltsverzeichnis
00. Einführung
- Algorithmen und Datenstrukturen
- Algorithmische Komplexität
- Erste Schritte mit LeetCode und Strategien
- LeetCode-Problemlösungen (lexikografische Sortierung, über 850 Problemlösungen)
- LeetCode-Problemlösungen (sortiert nach Kategorie, empfohlene Problemliste ★★★)
- Die 100 am häufigsten gestellten Interviewfragen von LeetCode (sortiert nach Kategorie)
- Die 200 am häufigsten gestellten Fragen in LeetCode-Interviews (sortiert nach Kategorie)
01. Array
- Array-Grundlagen
- Array-Grundlagen
- Ordnen Sie grundlegende Fragen an
- Array-Sortieralgorithmus
- Blasensortierung
- Auswahl sortieren
- Einfügesortierung
- Hill-Sorte
- Sortierung zusammenführen
- Schnelle Sortierung
- Heap-Sortierung
- Zählsortierung
- Eimersortierung
- Radix-Sortierung
- Frage zur Array-Sortierung
- Binäre Suche
- Binäre Suchkenntnisse (1)
- Binäre Suchkenntnisse (2)
- Binäre Suchfrage
- Array-Doppelzeiger
- Wissen über Array-Doppelzeiger
- Frage zum Array-Doppelzeiger
- Array-Schiebefenster
- Kenntnisse über Array-Schiebefenster
- Frage zum Array-Schiebefenster
02. Verknüpfte Liste
- Grundkenntnisse über verknüpfte Listen
- Grundkenntnisse über verknüpfte Listen
- Klassische Fragen zu verknüpften Listen
- Sortierung verknüpfter Listen
- Kenntnisse in der Sortierung verknüpfter Listen
- Frage zur Sortierung verknüpfter Listen
- Doppelter Zeiger der verknüpften Liste
- Kenntnisse über Doppelzeiger verknüpfter Listen
- Doppelzeigerfrage zur verknüpften Liste
03. Stapel
- Stack-Grundlagen
- Stack-Grundlagen
- Stapeln Sie grundlegende Fragen
- monotoner Stapel
- Monotones Stapelwissen
- Monotone Stapelfrage
04. Warteschlange
- Grundlagen der Warteschlange
- Grundlagen der Warteschlange
- Grundlegende Fragen in die Warteschlange stellen
- Prioritätswarteschlange
- Kenntnisse über Prioritätswarteschlangen
- Frage zur Prioritätswarteschlange
05. Hash-Tabelle
- Wissen über Hash-Tabellen
- Frage zur Hash-Tabelle
06. Saite
- String-Grundlagen
- String-Grundlagen
- Klassische String-Fragen
- Einzelmuster-String-Abgleich
- Brute-Force-Algorithmus
- Rabin-Karp-Algorithmus
- KMP-Algorithmus
- Boyer Moore-Algorithmus
- Horspool-Algorithmus
- Sonntags-Algorithmus
- Frage zum Abgleich einzelner Musterzeichenfolgen
- Abgleich mehrerer Musterzeichenfolgen
- Wörterbuchbaumwissen
- Frage zum Wörterbuchbaum
- Kenntnisse über AC-Automaten
- Problem mit dem AC-Automaten
- Wissen über Suffix-Arrays
- Frage zum Suffix-Array
07. Baum
- Binärbaum
- Grundkenntnisse über Bäume und Binärbäume
- Wissen über die Durchquerung von Binärbäumen
- Problem der Binärbaumdurchquerung
- Kenntnisse in der Wiederherstellung von Binärbäumen
- Problem bei der Wiederherstellung des Binärbaums
- binärer Suchbaum
- Wissen über binäre Suchbäume
- Frage zum binären Suchbaum
- Segmentbaum
- Segmentbaumwissen
- Frage zum Liniensegmentbaum
- Baumarray
- Wissen über Baumarrays
- Frage zum Baumarray
- Und durchsuchen Sie die Sammlung
- und nach Wissen suchen
- Und überprüfen Sie die Fragen
08. Graphentheorie
- Grundkenntnisse in Graphen
- Definition und Klassifizierung von Diagrammen
- Graphspeicherstruktur und Problemanwendung
- Graphdurchquerung
- Tiefenorientierte Suche nach Wissen über Graphen
- Tiefensuchproblem für Diagramme
- Breitenorientierte Suche nach Wissen in Diagrammen
- Erste Suchfrage zur Diagrammbreite
- Topologische Sortierkenntnisse von Graphen
- Frage zur topologischen Sortierung von Graphen
- Spannender Baum des Graphen
- Minimale Spanning-Tree-Kenntnisse für Diagramme
- Minimales Spannbaumproblem für Diagramme
- kürzester Weg
- Wissen über den kürzesten Weg aus einer Hand (1)
- Wissen über den kürzesten Weg aus einer Hand (2)
- Problem des kürzesten Weges aus einer Hand
- Wissen über den kürzesten Weg aus mehreren Quellen
- Problem des kürzesten Weges mit mehreren Quellen
- Wissen über den kürzesten Weg
- Zweite Frage zum kurzen Weg
- Kenntnisse über Differential-Constraint-Systeme
- Fragen zum Differentialbeschränkungssystem
- zweiteiliger Graph
- Grundkenntnisse über bipartite Graphen
- Grundlegende Fragen zu bipartiten Graphen
- Zweiteiliger Graph mit maximalem Matching-Wissen
- Ungarischer Algorithmus
- Hopcroft-Karp-Algorithmus
- Bipartite-Graph-Maximum-Matching-Problem
09. Grundlegender Algorithmus
- Aufzählungsalgorithmus
- Kenntnisse über Aufzählungsalgorithmen
- Fragen zum Aufzählungsalgorithmus
- rekursiver Algorithmus
- Kenntnisse über rekursive Algorithmen
- Fragen zum rekursiven Algorithmus
- Teilen-und-Herrsche-Algorithmus
- Teilen und erobern Sie das Wissen über Algorithmen
- Fragen zum Divide-and-Conquer-Algorithmus
- Backtracking-Algorithmus
- Kenntnisse über Backtracking-Algorithmen
- Fragen zum Backtracking-Algorithmus
- gieriger Algorithmus
- Wissen über Greedy-Algorithmen
- Frage zum Greedy-Algorithmus
- Bitoperationen
- Kenntnisse im Bitbetrieb
- Fragen zur Bit-Operation
10. Dynamische Programmierung
- Grundlagen der dynamischen Programmierung
- Grundlagen der dynamischen Programmierung
- Grundlegende Fragen zur dynamischen Programmierung
- Auswendig gelernte Suche
- Kenntnisse in der Speichersuche
- Fragen zur Erinnerungssuche
- Linearer DP
- Lineare DP-Kenntnisse (1)
- Lineare DP-Kenntnisse (2)
- Lineare DP-Frage
- Rucksackproblem
- Wissen über Rucksackprobleme (1)
- Wissen über Rucksackprobleme (2)
- Wissen über Rucksackprobleme (3)
- Wissen über Rucksackproblem (4)
- Wissen über Rucksackprobleme (5)
- Fragen zum Rucksackproblem
- Intervall DP
- Intervall-DP-Wissen
- Intervall-DP-Frage
- Baum DP
- Baum-DP-Kenntnisse
- Baum-DP-Frage
- Zustandskomprimierung DP
- DP-Kenntnisse zur Zustandskomprimierung
- DP-Frage zur Zustandskomprimierung
- Zähle DP
- DP-Wissen zählen
- DP-Fragen zählen
- Digitale DP
- Digitales DP-Wissen
- Digitale DP-Fragen
- Wahrscheinlichkeit DP
- Wahrscheinlichkeits-DP-Wissen
- Fragen zur Wahrscheinlichkeits-DP
- Dynamische Programmieroptimierung
- Monotone Stapel-/Prioritätswarteschlangenoptimierung
- Steigungsoptimierung
- Optimierung der viereckigen Ungleichung
- Problem der dynamischen Programmieroptimierung
11. Zusätzlicher Inhalt
- Zeitplan für die Fertigstellung des Inhalts
12. LeetCode-Problemlösungen (860 Fragen beantwortet)