Algorithmusgymnastik 14

Swap Nth Node with Head (Easy)

Erläuterung

Der Kopf der einfach verknüpften Liste und die Ganzzahl "N" werden als Argumente übergeben. Tauschen Sie den Kopf und den N-ten Knoten vom Kopf aus. Der Rückgabewert ist der Kopf der neuen verknüpften Liste.

Beispiel

Schauen wir uns ein Beispiel mit N = 4 an. Screen Shot 2020-01-10 at 16.35.08.png Da Kopf der erste ist und 28 des vierten Knotens und 7 des Kopfes ausgetauscht werden, wird es wie folgt. Screen Shot 2020-01-10 at 16.35.25.png

Solution Runtime Complexity O(n) Im schlimmsten Fall dauert es O (n), da es gegen die verknüpfte Liste scannen muss. Space Complexity O(1) Da nur mehrere Zeiger verwendet werden, beträgt die Speichereffizienz O (1).

Step By Step Bereiten Sie zwei Zeiger vor. Screen Shot 2020-01-10 at 16.42.22.png Schleife, bis der aktuelle Zeiger auf den N-ten Knoten zeigt. Screen Shot 2020-01-10 at 16.43.15.png Der aktuelle Zeiger zeigt auf den 4. Knoten. Stoppen Sie die Schleife hier. Screen Shot 2020-01-10 at 16.45.12.png Von hier aus werden wir Knoten austauschen. Screen Shot 2020-01-10 at 16.46.28.png Screen Shot 2020-01-10 at 16.47.12.png Screen Shot 2020-01-10 at 16.47.32.png Screen Shot 2020-01-10 at 16.47.50.png Nachdem wir getauscht haben, geben wir einen Zeiger auf den aktuellen Wert zurück.

Implementierung

SwapNth.java


class SwapNth{
  // Node indices starts from 1.
  public LinkedListNode SwapNthNode(LinkedListNode head, int n) {

    if (head == null || n < 1) return head; // Edge case

    LinkedListNode cur = head;
    LinkedListNode prev = null;

    int count = 1;

    while (count < n && cur != null) {
      prev = cur;
      cur = cur.next;
      count++;
    }

    if (cur == null) return head;

    // Swapping
    prev.next = head;
    LinkedListNode temp = head.next;
    head.next = cur.next;
    cur.next = temp;
    
    return cur;
  }
} 

Impressionen

Wenn Sie einfache Vorgänge wie Auslagern und Sortieren auf die verknüpfte Liste anwenden möchten Ich denke, Sie können eine Lösung finden, indem Sie mehrere Zeiger verwenden.

Recommended Posts

Algorithmusgymnastik 10
Algorithmusgymnastik 3
Algorithmusgymnastik 9
Algorithmusgymnastik 14
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
Algorithmus Gymnastik 24 Teilmengen
Algorithmus Gymnastik 23 Zusammenführungsintervalle
Algorithmus Gymnastik 20 Duplikate entfernen
Algorithmus Gymnastik 21 LinkedList-Zyklus
Algorithmus Gymnastik 24 Zyklische Sortierung
Algorithmus Gymnastik 19 No-Repeat-Teilzeichenfolge
Algorithmusübung 6
Algorithmus Gymnastik 24 Eine verknüpfte Liste umkehren
Python-Algorithmus
Algorithmusübungen 13
Algorithmus Gymnastik 20 Paar mit Zielsumme
Algorithmusgymnastik 22 Quadrieren eines sortierten Arrays
Algorithmus Gymnastik 24 Mitte der verknüpften Liste
Python-Memorandum (Algorithmus)
Wörterbuch-Lernalgorithmus
String-Suchalgorithmus