Top 150-InterviewEinfach

Liste mit zufälligem Zeiger kopieren

Detaillierte Anleitung und Python-Implementierung für das Problem „Liste mit Zufallszeiger kopieren“.

Problemstellung

Einfach

Eine verknüpfte Liste der Länge n ist so gegeben, dass jeder Knoten einen zusätzlichen Zufallszeiger enthält, der auf jeden Knoten in der Liste oder auf Null zeigen könnte.

Erstellen Sie eine tiefe Kopie der Liste. Die tiefe Kopie sollte aus genau n brandneuen Knoten bestehen, wobei der Wert jedes neuen Knotens auf den Wert des entsprechenden Originalknotens gesetzt wird. Sowohl der nächste als auch der zufällige Zeiger der neuen Knoten sollten auf neue Knoten in der kopierten Liste zeigen, sodass die Zeiger in der ursprünglichen Liste und der kopierten Liste denselben Listenstatus darstellen.

Die Liste wird als Liste von Paaren [val, random_index] dargestellt, wobei random_index der Index des Knotens ist, auf den der Zufallszeiger zeigt, oder -1, wenn er auf Null zeigt. Implementieren Sie eine Funktion copyRandomList(head: list) -> list, die die tiefe Kopie im gleichen Format zurückgibt.

Einschränkungen
  • 0 <= n <= 1000
  • -10000 <= Node.val <= 10000
  • Node.random is null or points to some node in the linked list

Beispiele

Example 1
Input
[[7,-1],[13,0],[11,4],[10,2],[1,0]]
Output
[[7,-1],[13,0],[11,4],[10,2],[1,0]]
Explanation

The deep copy has the same structure. Node 0 (val=7) has random=null, Node 1 (val=13) has random pointing to Node 0, etc.

Example 2
Input
[[1,1],[2,1]]
Output
[[1,1],[2,1]]
Explanation

Node 0 (val=1) has random pointing to Node 1. Node 1 (val=2) has random pointing to Node 1 (itself).

Example 3
Input
[[3,-1],[3,0],[3,-1]]
Output
[[3,-1],[3,0],[3,-1]]
Explanation

Three nodes all with value 3. Node 1's random points to Node 0.

Need a Hint?
Erwägen Sie die Verwendung verknüpfter Listen-spezifischer Datenstrukturen wie Mengen oder Heaps.
Edge Cases to Watch
  • Leere Eingabestrukturen
  • Einzelelementeingaben
  • Große numerische Grenzen

Bereit zur Lösung?

Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.

Im Editor öffnen
Found this breakdown helpful?

PyRun is built and maintained by an independent solo developer. If this helped your interview prep, consider buying a coffee!

Buy me a coffee

Empfohlene Python-Ressourcen

Erweitern Sie Ihr Wissen mit zugehörigen interaktiven Tutorials, Spickzetteln und Codevergleichen.