Le migliori 150 intervisteFacile

Copia elenco con puntatore casuale

Guida dettagliata e implementazione Python per il problema "Copia elenco con puntatore casuale".

Dichiarazione del problema

Facile

Viene fornita una lista concatenata di lunghezza n tale che ogni nodo contenga un puntatore casuale aggiuntivo, che potrebbe puntare a qualsiasi nodo della lista, o null.

Costruisci una copia approfondita dell'elenco. La copia profonda dovrebbe consistere esattamente di n nodi nuovi di zecca, dove ogni nuovo nodo ha il suo valore impostato sul valore del nodo originale corrispondente. Sia il puntatore successivo che quello casuale dei nuovi nodi dovrebbero puntare ai nuovi nodi nell'elenco copiato in modo tale che i puntatori nell'elenco originale e nell'elenco copiato rappresentino lo stesso stato dell'elenco.

L'elenco è rappresentato come un elenco di coppie [val, random_index] dove random_index è l'indice del nodo a cui punta il puntatore casuale o -1 se punta a null. Implementa una funzione copyRandomList(head: list) -> list che restituisce la copia profonda nello stesso formato.

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

Esempi

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?
Prendi in considerazione l'utilizzo di strutture dati specifiche dell'elenco collegato come set o heap.
Edge Cases to Watch
  • Strutture di input vuote
  • Ingressi a elemento singolo
  • Grandi limiti numerici

Pronto a risolvere?

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

Apri nell'editor
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

Risorse Python consigliate

Espandi le tue conoscenze con tutorial interattivi, foglietti illustrativi e confronti di codici correlati.