Algorithmus- und Datenstrukturübungen
Die optimale Lösung für das Java IT -berühmte Unternehmensalgorithmus und Datenstrukturproblem
1. Stapel und Warteschlange
- Entwerfen Sie einen Stapel mit GetMin -Funktion
- Eine Warteschlange von zwei Stapeln
- So beziehen sich auf eine rekursive Funktion und Stapelbetrieb inverse Reihenfolge
- Katze und Hundewarteschlange
- Verwenden Sie einen Stapel, um die Sortierung eines anderen Stacks zu implementieren
- Um das Problem des Hannover Tower zu lösen, ändern Sie zunächst die Spielregeln: Die Liniengrenze kann nicht direkt von links nach rechts oder von rechts nach links von links bewegt werden, sondern müssen die Mitte durchlaufen. Suchen Sie den optimalen Bewegungsprozess und die Gesamtzahl der Schritte, wenn der Turm wieder N -Schichten ist.
- Generieren Sie ein Fenster maximales Array
- MaxTree zum Erstellen von Daten
- Finden Sie bei einer Formungsmatrix -Karte die Werte von 0 und 1. Ermitteln Sie die maximale rechteckige Fläche von 1 unter allen Matrixregionen, in denen alle 1 die Anzahl von 1 sind.
- Der Maximalwert abzüglich der Anzahl der Unterarrays mit einem Mindestwert von weniger als oder gleich der Num
2. Probleme mit Linklisten
- Drucken Sie angesichts der Header -Zeiger Head1 und Head2 von zwei bestellten verlinkten Listen den gemeinsamen Teil der beiden verknüpften Listen aus
- Löschen Sie den K-TH, bis der Knoten in einzelnen und doppelt gebundenen Listen
- Löschen Sie die Knoten in der Mitte der verknüpften Liste und die Knoten bei A/B
- Implementieren Sie Funktionen, die Einweg-verknüpfte Listen invertieren, und um zwei Wege verknüpfte Listen umzusetzen
- Umgekehrter Teil der einseitigen verlinkten Liste
- Arthurs Problem mit der runden Single -Link -Liste
- Stellen Sie fest, ob eine verknüpfte Liste eine Palindromstruktur ist
- Teilen Sie die einseitige verlinkte Liste in eine kleine linke, gleiche Mitte, große rechts nach rechts
- Kopieren Sie eine verknüpfte Liste mit zufälligen Zeigerknoten
- Zwei einzeln verlinkte Listen generieren eine hinzugefügte Linkliste
- Eine Reihe von Problemen bei der Überschneidung von zwei verknüpften Listen
- Umgekehrte Reihenfolge zwischen den einzelnen K -Knoten einer einzigen verknüpften Liste
- Löschen Sie Knoten mit wiederholten Werten in nicht ordnungsgemäßen einzelnen verknüpften Listen
- Löschen Sie einen angegebenen Wertknoten in einer einzigen verknüpften Liste
- Konvertieren Sie die Suche nach Binärbaum in eine bidirektionale Verbindungstabelle
- Auswahlsortierung von einzelnen verknüpften Listen
- Eine seltsame Art, Knoten zu löschen
- Fügen Sie neue Knoten in eine geordnete kreisförmige einköpfige Liste ein
- Zusammenführen zwei bestellte einkräuselte Tische
- Umstrukturieren Sie die einkräuselte Tisch im linken und rechten halben Bereich neu
Binärbaumproblem
- Rekursive und nicht rezisive Methoden zur Realisierung der Vorbestellungs-, Mittelordnungs- und Postreiztraversal von Binärbäumen
- Drucken Sie den Grenzknoten des binären Baums
- Wie man einen binären Baum intuitiver druckt
- Binärbaumserialisierung und Deserialisierung
- Methode auf Gottebene, um binäre Bäume zu durchqueren
- Finden Sie die längste Pfadlänge der akkumulierten Summe für den angegebenen Wert im Binärbaum
- Finden Sie den größten Suchbinärbaum im binären Baum
- Finden Sie die maximale Topologie im binären Baum, der die Suchbinärbaumkriterien entspricht
- Binärbaum für Schichtdruck und Zick -Zack -Druck
- Passen Sie die Suche nach zwei falschen Knoten im binären Baum an
- Bestimmen Sie, ob der T1 -Baum alle topologischen Strukturen des T2 -Baums enthält
- Stellen Sie fest, ob es Unterbälde im T1 -Baum gibt, die genau die gleiche Topologie wie der T2 -Baum haben
- Bestimmen Sie, ob ein binärer Baum ein ausgewogener binärer Baum ist
- Baue den Suchbinärbaum basierend auf dem Array nach der Bestellung neu
- Stellen Sie fest, ob ein binärer Baum ein Suchbinärbaum und ein vollständiger binärer Baum ist
- Generieren Sie ausgewogene Suchbäume durch geordnete Arrays
- Finden Sie den Nachfolgerknoten eines Knotens im binären Baum
- Finden Sie den nächsten gemeinsamen Vorfahren von zwei Knoten im binären Baum
- Tarjan -Algorithmus und gleichzeitiger Suchsatz Lösen Sie das Problem der Batch -Abfrage der jüngsten öffentlichen Vorfahren zwischen binären Baumknoten
- Maximaler Abstand zwischen binären Baumknoten
- Binärbäume in Kombination mit Vorbestellungs-, Mittelordnungs- und Postorder -Arrays rekonstruieren
- Generieren Sie Arrays nach der Bestellung über Vorbestellungs- und Bestellarrays
- Statistiken und erzeugt alle verschiedenen binären Bäume
- Zählen Sie die Anzahl der Knoten in einem völlig binären Baum
- Maximale inkrementelle Subsequenz
Rekursive und dynamische Programmierung
- Rekursive und dynamische Programmierung von Problemen der Fibonacci -Serie
- Der minimale Weg zur Matrix
- Mindestbetrag der Währung zum Austausch gegen Geld
- Wie man Geld austauscht
- Der Turm von Hannover
- Das am längsten häufige Subsequenzproblem
- Das am längsten öffentliche Stringproblem
- Mindestkostkosten
- Verschachtelte Zusammensetzung von Saiten
- Dungeons and Dragons -Spielprobleme
- Anzahl der in Buchstabenkombinationen umgewandelten Zahlen
- Die Anzahl der Zusammensetzungen des Ausdrucks, um das gewünschte Ergebnis zu erzielen
- Kartenspielproblem in einer Linie
- Sprungspiel
- Die längste kontinuierliche Sequenz in einem Array
- N Königinproblem
String -Problem
- Stellen Sie fest, ob zwei Saiten das Verformungswort bewachen
- Summe von Substrings von Zahlen in Saiten
- Entfernen Sie die K -Substrings, die in Folge in der Zeichenfolge erscheinen
- Bestimmen Sie, ob zwei Saiten rotierende Wörter sind
- Konvertieren Sie eine Ganzzahl -Zeichenfolge in einen Ganzzahlwert
- Ersetzen Sie bestimmte Zeichenfolgen, die in Saiten kontinuierlich erscheinen
- Statistische Saiten für Saiten
- Bestimmen Sie, ob alle Zeichen im Charakter -Array nur einmal erschienen sind
- Finden Sie Saiten in einem bestellten, aber leeren Array
- Einstellung und Austausch von Saiten
- Flip String
- Mindestabstand zwischen zwei Saiten in einem Array
- Fügen Sie ein Minimum von Zeichen hinzu, um die Zeichenfolge als palindromische Zeichenfolge zu erstellen
- Gemäß der Gültigkeit der Saite und der maximalen effektiven Länge
- Formel String -Bewertung
- Es muss eine Reihe von binären Saiten links von 0 geben
- Alle Saiten nähern, um Kapitalstränge mit der kleinsten Wörterbuchordnung zu produzieren
- Finden Sie die längste nicht repetitive Substring der String
- Finden Sie die neue Art des genannten Charakters
- Mindestlänge, die Substring enthalten
- Mindestanzahl der Palindrome -Segmentierung
- String Matching -Problem
- Implementierung des Wörterbuchbaums (Präfixbaum)
Bit -Betrieb
- Es werden keine zusätzlichen Variablen verwendet, um zwei Zahlen auszutauschen
- Ermitteln Sie die größere Anzahl von zwei Zahlen ohne Vergleich
- Es werden nur Bitoperationen ohne arithmetische Operationen verwendet, um Addition, Subtraktion, Multiplikation und Aufteilung der Ganzzahlen umzusetzen
- Wie viele 1cccs gibt es im binären Ausdruck von ganzen Zahlen
- Finden Sie ungerade Zahlen in einem Array, in dem andere Zahlen gleichmäßig erscheinen
- Suchen Sie eine Zahl, die nur einmal in einem Array erscheint, in dem andere Zahlen k -Zeiten erscheinen
Array- und Matrixprobleme
- Kreisdruckmatrix
- Drehen Sie die quadratische Matrix im Uhrzeigersinn um 90 °
- "一" Glyphe -Druckmatrix
- Finden Sie die kleinste Anzahl von K in einem ungeordneten Array
- Die kürzeste Subtarray -Länge zu sortieren
- Ermitteln Sie die Anzahl der Vorkommen, die im Array größer als N/K sind
- Finden Sie Zahlen in einer Matrix, in der Zeilen und Spalten sortiert werden
- Das längste inteGen Sub-Array wird erhalten
- Kein wiederholter Druck sortierter Arrays fügt alle Quads und Drillinge für einen bestimmten Wert hinzu
- Die akkumulierte Summe der längsten Subtarray -Länge in einer Reihe von unsortierten positiven Zahlen ist der angegebene Wert
- Problem in der längsten Subtarray -Reihe von akkumulierten Summen in einem unsortierten Array
- Die akkumulierte Summe der längsten Subtarray -Länge in einem unsortierten Array ist geringer als oder gleich dem angegebenen Wert
- Sortierung natürlicher Zahlenarray
- Odd -Indexs sind alle ungeraden Zahlen oder sogar Einschüsse.
- Subarray -Akkumulation und maximal
- Maximale Akkumulationssummenproblem von Submatrix
- Finden Sie einen lokalen kleinsten Standort im Array
- Das maximale kumulative Produkt von Unterarrays in einem Array
- Drucken Sie das größte Top K von n Arrays aus
- Die Grenzen sind alle 1 maximale quadratische Größe
- Dieser Ort ist nicht in die kumulative Multiplikation des Array wert
- Array -Partition -Einstellung
- Finden Sie den kürzesten Pfadwert
- Die kleinste positive Ganzzahl, die in der Array nicht erscheint
- Die maximale Differenz zwischen benachbarten Zahlen nach Array -Sortierung beträgt 9
üben
- Ersetzen Sie Räume (Schwert, das anbietet)
- Suche in einem zweidimensionalen Array (Schwert, das anbietet)
- Umkehrlinkliste (Schwertpunkt für das Angebot)
- Löschen Sie die wiederholten Knoten der verknüpften Liste (Schwert zu bieten)
- Die Mindestanzahl des Rotationsarrays (Schwert, das auf das Angebot zeigt)
- Wiederholte Zahlen in Array (Schwert zu bieten)
- Zeichenfolge wert (Schwert, das anbietet)