Empfohlen zum Online-Lesen (Github-Zugriff ist im Land oft instabil)
Empfohlene Gitee-Synchronisierung
- Einführung : Bei diesem Projekt handelt es sich um einen vollständigen Satz von Testplänen, der jedem helfen soll, Umwege zu vermeiden, Algorithmen Schritt für Schritt zu lernen und dem Autor zu folgen.
- Offiziell veröffentlicht : „Code Thoughts“.
- PDF-Version : PDF-Version von „Code Random Notes“ zu Algorithmen.
- Offene Klasse des Algorithmus : Offene Videoklasse des Algorithmus „Code Random Record“.
- Der stärkste achtteilige Aufsatz : Zufällige Gedanken zum Code, der die Essenz des Wissensplaneten aufzeichnet PDF.
- Die Reihenfolge der Beantwortung von Fragen : Die README-Datei hat die Reihenfolge der Beantwortung von Fragen festgelegt. Sie können sie einfach der Reihe nach beantworten.
- Lerngemeinschaft : Lernen Sie gemeinsam etwas über Check-in/Interviewfähigkeiten/wie man ein Angebot auswählt/Empfehlungen von großen Unternehmen/Arbeitsplatzregeln/Lebenslaufänderung/Technologieaustausch/Programmleben. Willkommen auf dem Wissensplaneten „Code Caprice“.
- Code einreichen : Dieses Projekt verwendet zur Erklärung die Sprache C++, es gibt jedoch bereits mehrsprachige Versionen wie Java, Python, Go, JavaScript usw. Vielen Dank an alle Mitwirkenden hier, wenn Sie auch Code beitragen möchten, um Ihren Avatar zum Leuchten zu bringen , klicken Sie auf Hier erfahren Sie, wie Sie Ihren Code einreichen.
- Hinweis zum Nachdruck : Alle folgenden Artikel sind Originalwerke von mir (Programmierer Carl). Bitte geben Sie die Quelle an, wenn Sie Artikel aus diesem Projekt zitieren. Wenn Sie böswillige Plagiate oder Übertragungen finden, werden Sie rechtliche Mittel einsetzen, um Ihre Rechte und Interessen zu schützen. Lassen Sie uns gemeinsam eine gute technische Entwicklungsumgebung pflegen!
LeetCode-Anleitung zum Bürsten von Fragen
Hintergrund der Frage zum Putzleitfaden
Viele Studenten, die gerade erst mit der Beantwortung von Fragen begonnen haben, sind verwirrt: Angesichts der fast 2.000 Fragen zu Leetcode wissen sie, wo sie anfangen sollen.
Jeder hat das Gefühl, dass die Effizienz der Beantwortung von Fragen ineffizient ist und die Zeit vor allem in drei Punkten verschwendet wird:
- Finden Sie Fragen
- Es wurde eine Frage gefunden, die zu diesem Zeitpunkt nicht beantwortet werden sollte
- Es gibt keinen vollständigen Satz qualitativ hochwertiger Problemlösungen als Referenz.
Tatsächlich habe ich diese Frage schon einmal auf Zhihu beantwortet. Die Antwort lautet ungefähr wie folgt: Array->verknüpfte Liste->Hash-Tabelle->String->Stack und Warteschlange->Baum->Backtracking->Greedy->Dynamische Programmierung - > Graphentheorie -> Erweiterte Datenstrukturen, beginnen Sie dann mit den einfachen und gehen Sie nach der Bearbeitung einiger Arten von Fragen nach und nach zu mittleren und schwierigen Fragen über.
Aber ich kann mich in meine Lage hineinversetzen und spüre: Selbst bei einem solchen Gesamtplan ist es für einen Anfänger oder sogar einen Algorithmen-Veteranen sehr schwierig, ein Thema zu finden, das zu ihm passt. Der Zeitaufwand ist sehr hoch, das Thema jedoch nicht zwangsläufig ein klassisches Thema.
Wenn es um die Beantwortung von Fragen geht, möchten wir alle so schnell wie möglich alle klassischen Fragen in einer schrittweisen Schwierigkeitsreihenfolge bearbeiten , damit die Effizienz am höchsten ist!
Deshalb habe ich einen Leitfaden für die Beantwortung von Leetcode-Fragen zusammengestellt: Jede Frage wird von mir sorgfältig ausgewählt. Sie müssen sich nur an diese Reihenfolge halten . Die README-Datei hat die Reihenfolge der Fragen festgelegt, und die Reihenfolge der Artikel entspricht der Reihenfolge der Beantwortung der Fragen! Gehen Sie sie einfach einzeln durch, Sie müssen sich nicht durch das Meer von Fragen wühlen und die Themen selbst auswählen!
Darüber hinaus habe ich zu jeder Frage detaillierte Lösungen geschrieben (mit Bildern und Texten sowie Videos zu schwierigen Punkten), und meine Lösungen sind auf der Homepage der entsprechenden Fragen aufgeführt. Die Qualität ist für alle offensichtlich.
Jetzt habe ich die Reihenfolge der Beantwortung der Fragen geklärt, um mehr Schülern, die Algorithmen lernen, zu helfen, Umwege zu vermeiden!
Wenn Sie Leetcode bearbeiten, wird dringend empfohlen, die Reihenfolge der Lösung der Fragen in diesem Handbuch einzuhalten. Nach Abschluss des Bürstenvorgangs werden Sie feststellen, dass Sie einen qualitativen Sprung im gesamten Wissenssystem gemacht haben und nicht mehr danach suchen müssen Richtungen im Meer der Fragen.
Die neuesten Artikel werden zuerst auf dem öffentlichen Konto „Code Caprice“ veröffentlicht. Scannen Sie den Code, um einen Blick darauf zu werfen, und Sie werden feststellen, dass es zu spät ist, Sie zu treffen!
So verwenden Sie diesen Quiz-Leitfaden
Beginnen Sie einfach mit dem Bürsten in der oben genannten Reihenfolge. Die Reihenfolge wurde festgelegt, also bürsten Sie einfach der Reihe nach.
Im Leitfaden zum Fragenputzen gibt es zu Beginn zu jedem Thema ein theoretisches Grundlagenkapitel. Es handelt sich nicht um eine lehrbuchartige theoretische Einführung, sondern um eine Zusammenfassung des Grundwissens, das aus dem tatsächlichen Kampf benötigt wird. Am Ende jedes Themas gibt es eine Zusammenfassung, die die umfassendste Zusammenfassung des Themas darstellt.
Wenn Sie sich mit Algorithmen auskennen, ist dieser Leitfaden auch das beste Material zur Überprüfung. Wenn Sie die Zusammenfassung jeder Serie schnell durchlesen, werden Ihnen das gesamte Algorithmen-Wissenssystem und die verschiedenen Lösungen in den Sinn kommen.
Jede Lösung hier ist ein Meisterwerk und verdient sorgfältige Überlegung .
Ich verwende in den Problemerklärungen einheitlich C++, aber Sie werden feststellen, dass fast jede Problemerklärung unten mit anderen Sprachversionen wie Java, Python, Go, JavaScript usw. ausgestattet ist. Es ist natürlich der Code, der von diesen begeisterten Jungs beigesteuert wurde Ich werde auch die Codequalität streng kontrollieren.
Daher ist jeder willkommen, mitzumachen, die verschiedenen Sprachversionen der Problemlösungen zu verbessern, Open Source zu nutzen und mehr Freunden zu helfen .
Sind Sie bereit? Beginnen wir mit dem Quiz-Guide, los, los!
Vorwort
Lerngemeinschaft „Code Caprice“.
Programmiersprache
- C++-Interview und Zusammenstellung von Wissenspunkten im C++-Studienführer
- Kurs „Grundlagen der Programmiersprache“.
- 23 Designmuster
Werkzeug
- Vim-Konfiguration aus einer Hand
- Git-Einführungs-Tutorial auf Nanny-Niveau, 10.000 Wörter ausführliche Erklärung
- Welche Tools sollten Programmierer zum Schreiben von Dokumentationen verwenden?
Auf der Suche nach einem Job
- ACM-Modellpraxis-Website, KaMa.com
- So sollte der Lebenslauf eines Programmierers geschrieben sein! ! (Lebenslaufvorlage beigefügt)
- [Berufliche Fähigkeiten] sollten so geschrieben werden!
- [Projekterfahrung] sollte so geschrieben werden!
- Hier finden Sie den Prozess und die Vorsichtsmaßnahmen für technische Interviews auf BAT-Ebene
Analyse der Algorithmusleistung
- Hier finden Sie alles, was Sie über Zeitkomplexität nicht wissen!
- Der O(n)-Algorithmus läuft tatsächlich ab. Wie groß ist n zu diesem Zeitpunkt?
- Lassen Sie uns anhand einer Interviewfrage über die zeitliche Komplexität rekursiver Algorithmen sprechen!
- Bezüglich der Komplexität des Weltraums haben Sie vielleicht ein paar Fragen?
- Zeit- und Raumkomplexitätsanalyse rekursiver Algorithmen!
- Verstehen Sie nach der Beantwortung so vieler Fragen den Speicherverbrauch Ihres Codes?
Array
- Arrays sind zu einfach, aber das sollten Sie wissen!
- Array: 704.Binäre Suche
- Array: 27. Elemente entfernen
- Array: 977. Quadrat des geordneten Arrays
- Array: 209. Subarray mit minimaler Länge
- Array: Bereichssumme
- Array: Entwickler kauft Land
- Array: 59. Spiralmatrix II
- Arrays: Zusammenfassung
verlinkte Liste
- Folgendes sollten Sie über verknüpfte Listen wissen:
- Verknüpfte Liste: 203. Verknüpfte Listenelemente entfernen
- Verknüpfte Liste: 707. Verknüpfte Liste entwerfen
- Verknüpfte Liste: 206. Drehen Sie die verknüpfte Liste um
- Verknüpfte Liste: 24. Tauschen Sie Knoten in der verknüpften Liste paarweise aus
- Verknüpfte Liste: 19. Löschen Sie den N-ten Knoten am Ende der verknüpften Liste
- Verknüpfte Liste: Verknüpfte Liste überschneidet sich
- Verknüpfte Liste: 142. Zirkuläre verknüpfte Liste
- Verlinkte Liste: Zusammenfassung!
Hash-Tabelle
- Was Sie über Hashtabellen wissen sollten!
- Hash-Tabelle: 242. Gültige Anagramme
- Hash-Tabelle: 1002. Finden Sie gemeinsame Zeichen
- Hash-Tabelle: 349. Schnittpunkt zweier Arrays
- Hash-Tabelle: 202.Glückszahl
- Hash-Tabelle: 1. Summe zweier Zahlen
- Hash-Tabelle: 454. Addition von vier Zahlen II
- Hash-Tabelle: 383. Lösegeldbrief
- Hash-Tabelle: 15. Summe aus drei Zahlen
- Zwei-Zeiger-Methode: 18. Summe von vier Zahlen
- Hash-Tabelle: Zusammenfassung!
Zeichenfolge
- Zeichenfolge: 344. Zeichenfolge umkehren
- Saite: 541. Reverse String II
- Zeichenfolge: Zahlen ersetzen
- Zeichenfolge: 151. Drehen Sie die Wörter in der Zeichenfolge um
- Saite: Rechtshändersaite
- Helfen Sie dabei, den KMP-Algorithmus gründlich zu erlernen
- String: 459. Wiederholter Teilstring
- String: Zusammenfassung!
Doppelzeigermethode
Die Doppelzeigermethode wird grundsätzlich auf Probleme mit Arrays, Strings und verknüpften Listen angewendet.
- Array: 27. Elemente entfernen
- Zeichenfolge: 344. Zeichenfolge umkehren
- Zeichenfolge: Zahlen ersetzen
- Zeichenfolge: 151. Drehen Sie die Wörter in der Zeichenfolge um
- Verknüpfte Liste: 206. Drehen Sie die verknüpfte Liste um
- Verknüpfte Liste: 19. Löschen Sie den N-ten Knoten am Ende der verknüpften Liste
- Verknüpfte Liste: Verknüpfte Liste überschneidet sich
- Verknüpfte Liste: 142. Zirkuläre verknüpfte Liste
- Doppelzeiger: 15. Summe aus drei Zahlen
- Doppelte Zeiger: 18. Summe von vier Zahlen
- Doppelte Hinweise: Zusammenfassung!
Stapel und Warteschlangen
- Stapel und Warteschlangen: Theoretische Grundlagen
- Stapel und Warteschlange: 232. Verwenden Sie den Stapel, um die Warteschlange zu implementieren
- Stapel und Warteschlange: 225. Verwenden Sie die Warteschlange, um den Stapel zu implementieren
- Stapel und Warteschlangen: 20. Gültige Klammern
- Stapel und Warteschlangen: 1047. Entfernen Sie alle angrenzenden Duplikate in einer Zeichenfolge
- Stapel und Warteschlangen: 150. Auswertung des umgekehrten polnischen Ausdrucks
- Stapel und Warteschlangen: 239. Maximales Schiebefenster
- Stapel und Warteschlange: 347. Top-K-Hochfrequenzelemente
- Stapel und Warteschlangen: Zusammenfassung!
Binärbaum
Die Gliederung der Themenklassifizierung lautet wie folgt:
- Folgendes sollten Sie über Binärbäume wissen!
- Binärbaum: Rekursive Durchquerung des Binärbaums
- Binärbaum: iteratives Durchlaufen eines Binärbaums
- Binärbaum: Einheitliche Iterationsmethode für Binärbäume
- Binärbaum: Durchquerung eines Binärbaums in Ebenenreihenfolge
- Binärbaum: 226. Binärbaum umdrehen
- Zusammenfassung dieser Woche! (Binärbaum)
- Binärbaum: 101. Symmetrischer Binärbaum
- Binärbaum: 104. Die maximale Tiefe eines Binärbaums
- Binärbaum: 111. Mindesttiefe des Binärbaums
- Binärbaum: 222. Die Anzahl der Knoten in einem vollständigen Binärbaum
- Binärbaum: 110. Ausgeglichener Binärbaum
- Binärbaum: 257. Alle Pfade des Binärbaums
- Abschluss dieser Woche! (Binärbaum)
- Binärbaum: 404. Summe der linken Blätter
- Binärbaum: 513. Suchen Sie den Wert in der unteren linken Ecke des Baums
- Binärbaum: 112. Pfadsumme
- Binärbaum: 106. Konstruieren Sie einen Binärbaum
- Binärbaum: 654. Maximaler Binärbaum
- Zusammenfassung dieser Woche! (Binärbaum)
- Binärbaum: 617. Zwei Binärbäume zusammenführen
- Binärbaum: 700. Binärer Suchbaum erscheint!
- Binärer Baum: 98. Überprüfen Sie den binären Suchbaum
- Binärbaum: 530. Minimale absolute Differenz des Suchbaums
- Binärer Baum: 501. Modus im binären Suchbaum
- Binärbaum: 236. Häufiges Vorfahrenproblem
- Zusammenfassung dieser Woche! (Binärbaum)
- Binärbaum: 235. Suchen Sie nach dem nächsten gemeinsamen Vorfahren des Baums
- Binärbaum: 701. Einfügevorgang im Suchbaum
- Binärbaum: 450. Löschvorgang im Suchbaum
- Binärbaum: 669. Beschneiden des binären Suchbaums
- Binärbaum: 108. Konvertieren Sie ein geordnetes Array in einen binären Suchbaum
- Binärbaum: 538. Konvertieren Sie den binären Suchbaum in einen kumulativen Baum
- Binärbaum: Zusammenfassung! (Alle Binärbaum-Fähigkeiten, die Sie beherrschen müssen, finden Sie hier)
Backtracking-Algorithmus
Die Gliederung der Themenklassifizierung lautet wie folgt:
- Folgendes sollten Sie über Backtracking-Algorithmen wissen!
- Backtracking-Algorithmus: 77. Kombination
- Backtracking-Algorithmus: 77. Kombinatorische Optimierung
- Backtracking-Algorithmus: 216. Kombinatorische Summe III
- Backtracking-Algorithmus: 17. Alphabetische Kombination von Telefonnummern
- Zusammenfassung dieser Woche! (Backtracking-Algorithmus Serie eins)
- Backtracking-Algorithmus: 39. Kombinatorische Summe
- Backtracking-Algorithmus: 40. Kombinatorische Summe II
- Backtracking-Algorithmus: 131. Geteilte Palindrom-Zeichenfolge
- Backtracking-Algorithmus: 93. IP-Adresse wiederherstellen
- Backtracking-Algorithmus: 78.Subset
- Zusammenfassung dieser Woche! (Backtracking-Algorithmus Serie 2)
- Backtracking-Algorithmus: 90. Teilmenge II
- Backtracking-Algorithmus: 491. Zunehmende Teilsequenz
- Backtracking-Algorithmus: 46. Vollständige Permutation
- Backtracking-Algorithmus: 47. Gesamtpermutation II
- Zusammenfassung dieser Woche! (Backtracking-Algorithmus Serie drei)
- Eine andere Möglichkeit, den Backtracking-Algorithmus zu schreiben, um Duplikate zu entfernen
- Backtracking-Algorithmus: 332. Reiseroute neu anordnen
- Backtracking-Algorithmus: 51.N Queen
- Backtracking-Algorithmus: 37. Lösen Sie Sudoku
- Zusammenfassung des Backtracking-Algorithmus
gieriger Algorithmus
Die Gliederung der Themenklassifizierung lautet wie folgt:
- Was Sie über Greedy-Algorithmen wissen sollten!
- Greedy-Algorithmus: 455. Cookies verteilen
- Greedy-Algorithmus: 376. Swing-Sequenz
- Greedy-Algorithmus: 53. Maximale Teilsequenzsumme
- Zusammenfassung dieser Woche! (Gieriger Algorithmus Serie 1)
- Greedy-Algorithmus: 122. Beste Zeit zum Kaufen und Verkaufen von Aktien II
- Gieriger Algorithmus: 55. Sprungspiel
- Gieriger Algorithmus: 45. Sprungspiel II
- Greedy-Algorithmus: Maximierte Array-Summe nach 1005.K Negationen
- Zusammenfassung dieser Woche! (Gieriger Algorithmus Serie 2)
- Gieriger Algorithmus: 134. Tankstelle
- Greedy-Algorithmus: 135. Süßigkeiten verteilen
- Greedy-Algorithmus: 860. Limonadenwechsel
- Greedy-Algorithmus: 406. Rekonstruieren Sie die Warteschlange basierend auf der Höhe
- Zusammenfassung dieser Woche! (Gieriger Algorithmus Serie 3)
- Greedy-Algorithmus: 406. Warteschlange basierend auf der Höhe rekonstruieren (Fortsetzung)
- Gieriger Algorithmus: 452. Bringen Sie den Ballon mit der minimalen Anzahl an Pfeilen zur Detonation
- Greedy-Algorithmus: 435. Keine überlappenden Intervalle
- Greedy-Algorithmus: 763. Buchstabenintervalle teilen
- Greedy-Algorithmus: 56. Intervalle zusammenführen
- Zusammenfassung dieser Woche! (Gieriger Algorithmus Serie 4)
- Greedy-Algorithmus: 738. Monoton steigende Zahlen
- Greedy-Algorithmus: 968. Überwachen Sie den Binärbaum
- Greedy-Algorithmus: Zusammenfassung! (Jede Zusammenfassung muss klassisch sein)
dynamische Programmierung
Das Thema dynamische Programmierung hat bereits begonnen, es bleibt keine Zeit zum Erklären, Freunde, steigt in den Bus und bleibt nicht zurück!
- Was Sie über dynamische Programmierung wissen sollten!
- Dynamische Programmierung: 509. Fibonacci-Zahlen
- Dynamische Programmierung: 70. Treppensteigen
- Dynamische Programmierung: 746. Treppensteigen mit minimalen Kosten
- Zusammenfassung dieser Woche! (Dynamische Planungsreihe 1)
- Dynamische Programmierung: 62. Verschiedene Wege
- Dynamische Programmierung: 63. Verschiedene Wege II
- Dynamische Programmierung: 343. Integer Split
- Dynamische Programmierung: 96. Verschiedene binäre Suchbäume
- Zusammenfassung dieser Woche! (Dynamische Programmierung Serie 2)
Rucksack-Problemserie:
- Dynamische Programmierung: 01 Rucksacktheoretische Grundlagen
- Dynamische Programmierung: 01 Rucksacktheoretische Grundlagen (Rolling Array)
- Dynamische Programmierung: 416. Partitionierung von Equisum-Teilmengen
- Dynamische Programmierung: 1049. Das Gewicht des letzten Steins II
- Zusammenfassung dieser Woche! (Dynamische Planungsreihe 3)
- Dynamische Programmierung: 494. Ziel und
- Dynamische Programmierung: 474. Einsen und Nullen
- Dynamische Programmierung: Vollständige Rucksackzusammenfassung
- Dynamische Programmierung: 518. Change Exchange II
- Zusammenfassung dieser Woche! (Dynamische Programmierreihe 4)
- Dynamische Programmierung: 377. Kombinatorische Summe IV
- Dynamische Programmierung: 70. Treppensteigen (vollständige Rucksackversion)
- Dynamische Programmierung: 322. Austausch ändern
- Dynamische Programmierung: 279. Perfekte Quadratzahlen
- Zusammenfassung dieser Woche! (Dynamische Programmierreihe 5)
- Dynamische Programmierung: 139. Wortaufteilung
- Dynamische Programmierung: Theoretische Grundlage mehrerer Rucksäcke
- Zusammenfassung des Rucksackproblems
Raubserie:
- Dynamische Programmierung: 198. Raub
- Dynamische Programmierung: 213. Raub II
- Dynamische Programmierung: 337. Raub III
Lagerserie:
- Dynamische Programmierung: 121. Beste Zeit zum Kaufen und Verkaufen von Aktien
- Dynamische Programmierung: Zusammenfassung dieser Woche (Serie 6)
- Dynamische Programmierung: 122. Beste Zeiten für den Kauf und Verkauf von Aktien II
- Dynamische Programmierung: 123. Beste Zeit zum Kaufen und Verkaufen von Aktien III
- Dynamische Programmierung: 188. Beste Zeit zum Kaufen und Verkaufen von Aktien IV
- Dynamische Programmierung: 309. Der beste Zeitpunkt für den Kauf und Verkauf von Aktien ist die Gefrierperiode
- Dynamische Programmierung: Zusammenfassung dieser Woche (Serie 7)
- Dynamische Programmierung: 714. Der beste Zeitpunkt zum Kauf und Verkauf von Aktien, einschließlich Bearbeitungsgebühren
- Dynamische Programmierung: Zusammenfassung der Aktienserien
Folgeserie:
- Dynamische Programmierung: 300. Längste ansteigende Teilsequenz
- Dynamische Programmierung: 674. Längste kontinuierlich steigende Sequenz
- Dynamische Programmierung: 718. Längstes sich wiederholendes Subarray
- Dynamische Programmierung: 1143. Längste gemeinsame Teilsequenz
- Dynamische Programmierung: 1035. Disjunkte Linien
- Dynamische Programmierung: 53. Maximale Teilsequenzsumme
- Dynamische Programmierung: 392. Teilsequenzen bestimmen
- Dynamische Programmierung: 115. Verschiedene Teilsequenzen
- Dynamische Programmierung: 583. Löschvorgang von zwei Zeichenfolgen
- Dynamische Programmierung: 72. Distanz bearbeiten
- Distanzzusammenfassung bearbeiten
- Dynamische Programmierung: 647. Palindrom-Teilzeichenfolge
- Dynamische Programmierung: 516. Längste Palindrom-Teilsequenz
- Zusammenfassung der dynamischen Programmierung
monotoner Stapel
- Monotoner Stapel: 739. Tagestemperatur
- Monotoner Stapel: 496. Nächstgrößeres Element I
- Monotoner Stapel: 503. Nächstgrößeres Element II
- Monotoner Stapel: 42. Regenwasser auffangen
- Monotoner Stapel: 84. Größtes Rechteck im Histogramm
Graphentheorie
Graphentheorie offiziell veröffentlicht
- Graphentheorie: theoretische Grundlagen
- Graphentheorie: Theoretische Grundlagen der Tiefensuche
- Graphentheorie: alle erreichbaren Pfade
- Graphentheorie: Theoretische Grundlage der Breitensuche
- Graphentheorie: Anzahl der Inseln
- Graphentheorie: Anzahl der Inseln
- Graphentheorie: Maximale Fläche einer Insel
- Graphentheorie: Gesamtfläche der Insel
- Graphentheorie: Die versunkene Insel
- Graphentheorie: Wasserströmungsproblem
- Graphentheorie: Bau der größten Insel
- Graphentheorie: String Solitaire
- Graphentheorie: Vollständige Erreichbarkeit gerichteter Graphen
- Graphentheorie: Umfang einer Insel
- Graphentheorie: Grundlagen der Union-Search-Theorie
- Graphentheorie: Wege zur Existenz finden
- Graphentheorie: Redundante Verbindungen
- Graphentheorie: Redundante Verbindungen II
- Graphentheorie: Prim des minimal aufspannenden Baums
- Graphentheorie: Kruskal des minimal aufspannenden Baums
- Graphentheorie: Topologische Sortierung
- Graphentheorie: Dijkstra (naive Version)
- Graphentheorie: Dijkstra (Heap-optimierte Version)
- Graphentheorie: Bellman_ford-Algorithmus
- Graphentheorie: Bellman_ford-Warteschlangenoptimierungsalgorithmus (auch bekannt als SPFA)
- Graphentheorie: Bellman_fords negative Gewichtsschleife
- Graphentheorie: Bellman_fords endlicher kürzester Weg aus einer Quelle
- Graphentheorie: Floyds Algorithmus
- Graphentheorie: A*-Algorithmus
- Graphentheorie: Zusammenfassung des Kürzeste-Weg-Algorithmus
- Graphentheorie: Zusammenfassung der Graphentheorie
(Kontinuierliche Aktualisierung...)
Top-Ten-Ranking
Zahlentheorie
Klassische Fragen zur erweiterten Datenstruktur
- Und durchsuchen Sie die Sammlung
- minimaler Spannbaum
- Segmentbaum
- Baumarray
- Wörterbuchbaum
Massive Datenverarbeitung
Ergänzende Fragen
Die oben genannten Fragen haben oberste Priorität. Sie müssen sie mindestens zweimal studieren, um sie vollständig zu verstehen. Wenn Sie die oben genannten Fragen beherrschen und noch auf der Suche nach weiteren Fragen zum Üben sind, können Sie die folgenden Fragen noch einmal studieren.
Diese Fragen sind sehr gut, aber einige davon ähneln dem Leitfaden zum Fragenputzen, und einige der Problemlösungen werden später ergänzt, sodass ich sie nicht in den Leitfaden zum Fragenputzen aufgenommen habe. Einige der Problemlösungen werde ich in Zukunft verbessern und diese dann in die Problemlösungsstrategie einbauen.
Array
- 1365. Wie viele Zahlen gibt es, die kleiner als die aktuelle Zahl sind?
- 941. Gültiges Bergarray (Doppelzeiger)
- 1207. Klassische Anwendung einer einzigartigen Reihe von Vorkommen beim Hashing
- 283. Null verschieben [Array] [Doppelzeiger]
- 189. Array drehen
- 724. Den Mittelindex eines Arrays ermitteln
- 34. Finden Sie die erste und letzte Position eines Elements in einem sortierten Array (Halbierungsmethode).
- 922. Sortieren Sie das Array nach ungeraden und geraden II
- 35.Einfügeposition suchen
verlinkte Liste
- 24. Tauschen Sie Knoten in der verknüpften Liste paarweise aus
- 234. Palindrom-verknüpfte Liste
- 143. Ordnen Sie die verknüpfte Liste neu an [Array] [zweiseitige Warteschlange] [verknüpfte Liste direkt bedienen]
- 141. Zirkuläre verknüpfte Liste
- 160. Überschnittene verknüpfte Listen
Hash-Tabelle
- 205. Isomorphe Strings: [Anwendung von Hash-Tabellen]
Zeichenfolge
- 925. Lange drücken, um den Abgleich zu simulieren
- 0844. Vergleichen Sie Zeichenfolgen mit Backspace [Stapelsimulation] [Doppelzeiger mit besserem Leerzeichen]
Binärbaum
- 129. Ermitteln Sie die Summe der Zahlen vom Wurzel- bis zum Blattknoten
- 1382. Konvertieren Sie den binären Suchbaum in einen ausgeglichenen und erstellen Sie einen ausgeglichenen binären Suchbaum
- 100. Derselbe Baum hat die gleiche Idee wie 101. Symmetrischer Binärbaum
- 116. Füllen Sie den nächsten rechten Knotenzeiger jedes Knotens
Backtracking-Algorithmus
gierig
- 649.Dota2 Senat ist schwierig
- 1221. Ausgewogene Charaktere aufzuteilen ist einfach und mühsam
dynamische Programmierung
- 5. Der längste Palindrom-Teilstring ist fast derselbe wie der 647. Palindrom-Teilstring.
- 132. Split Palindrome String II ist 647. Palindrome Substring und 5. Longest Palindrome Substring sehr ähnlich
- 673. Die Anzahl der am längsten ansteigenden Teilsequenzen
Graphentheorie
- 463. Umfang der Insel (Simulation)
- 841. Schlüssel und Räume [gerichteter Graph] dfs, bfs können verwendet werden
- 127.Word Solitaire Guangsou
Und durchsuchen Sie die Sammlung
- 684.Redundante Verbindung [Grundfragen zur kombinierten Suche]
- 685. Redundante Verbindung II [Anwendung von Union Lookup]
Simulation
- 657.Kann der Roboter zum Ursprung zurückkehren?
- 31. Nächste Vereinbarung
Bitoperationen
- 1356. Sortieren Sie nach der Anzahl der Einsen im digitalen Binärsystem
Algorithmus-Vorlage
Verschiedene grundlegende Algorithmusvorlagen
Mitwirkender
Klicken Sie hier, um alle Mitwirkenden von LeetCode-Master anzuzeigen. Vielen Dank an sie für die Ergänzung anderer Sprachversionen von LeetCode-Master, damit mehr Leser von diesem Projekt profitieren können.
Star-Trends
Über den Autor
Hallo zusammen, ich bin Programmierer Carl, Senior Fellow am Harbin Institute of Technology und Autor von „Code Captions“. Ich habe mich bei Tencent und Baidu mit der Forschung und Entwicklung der zugrunde liegenden Back-End-Technologien beschäftigt.
PDF-Download
Fügen Sie das folgende WeChat-Unternehmenskonto hinzu und die PDF-Version wird automatisch an alle gesendet. Sie können auch auswählen, ob Sie der Frage-Antwort-Gruppe beitreten möchten.
Denken Sie daran, beim Hinzufügen von WeChat eine Notiz zu machen: Name-Stadt-Position. Wenn Sie Student sind, geben Sie bitte Folgendes an: Name-Schulklasse. Hinweis: Wenn Sie sich nicht vorstellen, können Sie nicht bestehen.