[PYTHON] Algorithmus Gymnastik 24 Mitte der verknüpften Liste

Middle of the LinkedList Schreiben Sie eine Methode, die einen Zwischenknoten in eine LinkedList zurückgibt, und geben Sie den Anfang einer einzelnen verknüpften Liste an. Wenn die Gesamtzahl der Knoten in der LinkedList gerade ist, wird der zweite Zwischenknoten zurückgegeben.

Beispiel

Input: 1 -> 2 -> 3 -> 4 -> 5 -> null Output: 3

Input: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> null Output: 4

Input: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> null Output: 4

Solution Eine der Brute-Force-Strategien besteht darin, zuerst die Anzahl der Knoten in der LinkedList zu zählen und dann den zentralen Knoten in der zweiten Iteration zu finden. Es ist wichtig, dies in einer einzigen Iteration tun zu können.

Verwenden Sie die Methoden für schnelle und langsame Zeiger, um sicherzustellen, dass der schnelle Zeiger immer doppelt so groß ist wie der Knoten vor dem langsamen Zeiger. Wenn der schnelle Zeiger das Ende der LinkedList erreicht, zeigt der langsame Zeiger auf den zentralen Knoten.

Implementierung

class Node:
  def __init__(self, value, next=None):
    self.value = value
    self.next = next


def find_middle_of_linked_list(head):
  # Time Complexity O(N)
  # Space Complexity O(1)
  slow = head
  fast = head
  while (fast is not None and fast.next is not None):
    slow = slow.next
    fast = fast.next.next
  return slow


def main():
  head = Node(1)
  head.next = Node(2)
  head.next.next = Node(3)
  head.next.next.next = Node(4)
  head.next.next.next.next = Node(5)

  print("Middle Node: " + str(find_middle_of_linked_list(head).value))

  head.next.next.next.next.next = Node(6)
  print("Middle Node: " + str(find_middle_of_linked_list(head).value))

  head.next.next.next.next.next.next = Node(7)
  print("Middle Node: " + str(find_middle_of_linked_list(head).value))


main()

Recommended Posts

Algorithmus Gymnastik 24 Mitte der verknüpften Liste
Algorithmus Gymnastik 24 Eine verknüpfte Liste umkehren
Informationen zur Grundlagenliste der Python-Grundlagen
Algorithmusgymnastik 12
Algorithmusgymnastik 3
Algorithmusgymnastik 9
Algorithmusgymnastik 14
verknüpfte Liste
Algorithmusgymnastik 2
Algorithmusgymnastik 7
Algorithmus Gymnastik 15
Algorithmus Gymnastik 16
Algorithmusgymnastik 8
Algorithmus Gymnastik 17
Algorithmus Gymnastik 18
Algorithmusgymnastik 11
Algorithmusübung 5
Algorithmusgymnastik 4
Holen Sie sich die Spaltenliste und Datenliste von CASTable
Ermitteln Sie den Wert der mittleren Schicht von NN
[Python] Checklistenelemente alle, alle
Algorithmus Gymnastik 24 Teilmengen
Kopieren Sie die Liste in Python
Ich habe die Liste der Tastenkombinationen von Jupyter überprüft
[Algorithmus x Python] Verwendung der Liste
Suchen Sie nach dem Wert der Instanz in der Liste
Visualisieren Sie das Verhalten des Sortieralgorithmus mit matplotlib
[Python] Ruft die Liste der im Modul definierten Klassen ab
Notieren Sie sich die Liste der grundlegenden Verwendungszwecke von Pandas
In der Mitte der Entwicklung werden wir Alembic vorstellen
Lesen Sie die Linkliste im CSV-Format mit dem Graph-Tool
[Python] Ruft die Liste der ExifTags-Namen der Pillow-Bibliothek ab
Implementierte den Algorithmus von "Algorithm Picture Book" in Python3 (Heap Sort Edition)
[Python] Gibt alle Kombinationen von Elementen in der Liste aus
[Maya Python] Crush den Inhalt des Skripts 2 ~ Liste Notizen
Ich untersuchte den stärkenden Lernalgorithmus des Algorithmushandels
Liste der Python-Module
Der Beginn von cif2cell
Algorithmus Gymnastik 23 Zusammenführungsintervalle
Algorithmus Gymnastik 20 Duplikate entfernen
Algorithmus Gymnastik 21 LinkedList-Zyklus
Die Bedeutung des Selbst
der Zen von Python
Liste der Aktivierungsfunktionen (2020)
Die Geschichte von sys.path.append ()
Algorithmus Gymnastik 24 Zyklische Sortierung
Tiefe der verschachtelten Liste
Anzeige von Brüchen (Liste)
Algorithmus Gymnastik 19 No-Repeat-Teilzeichenfolge
Rache der Typen: Rache der Typen
Versuchen Sie, die Funktionsliste des Python> os-Pakets abzurufen
[Maya Python] Crush den Inhalt des Skripts 3 ~ Liste unbekannter Plugins
Wartung der Django + MongoDB-Entwicklungsumgebung (mitten im Schreiben)
Scraping Excel-Datei der Liste der Geschäfte, die regionale gemeinsame Gutscheine verarbeiten
Implementierte den Algorithmus von "Algorithm Picture Book" in Python3 (Bubble Sort)
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
Ich habe versucht, den FloodFill-Algorithmus mit TRON BATTLE von CodinGame zu implementieren
Ermitteln Sie die Anzahl der Vorkommen für jedes Element in der Liste
Iterator, der von der Mitte der Sequenz aus vorwärts scannen kann
Extrahieren Sie den Wert von dict oder list als Zeichenfolge
Implementierte den Algorithmus von "Algorithm Picture Book" in Python3 (Selective Sort)