Entrevista a los 150 mejoresfácil

Copiar lista con puntero aleatorio

Guía detallada e implementación de Python para el problema 'Copiar lista con puntero aleatorio'.

Declaración del problema

fácil

Se proporciona una lista vinculada de longitud n de modo que cada nodo contenga un puntero aleatorio adicional, que podría apuntar a cualquier nodo de la lista, o nulo.

Construya una copia profunda de la lista. La copia profunda debe constar de exactamente n nodos nuevos, donde cada nodo nuevo tiene su valor establecido en el valor de su nodo original correspondiente. Tanto el puntero siguiente como el aleatorio de los nuevos nodos deben apuntar a nuevos nodos en la lista copiada de modo que los punteros en la lista original y en la lista copiada representen el mismo estado de lista.

La lista se representa como una lista de pares [val, índice_aleatorio] donde índice_aleatorio es el índice del nodo al que apunta el puntero aleatorio, o -1 si apunta a nulo. Implemente una función copyRandomList(head: list) -> list que devuelva la copia profunda en el mismo formato.

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

Ejemplos

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?
Considere la posibilidad de utilizar estructuras de datos específicas de listas vinculadas, como conjuntos o montones.
Edge Cases to Watch
  • Estructuras de entrada vacías
  • Entradas de un solo elemento
  • Grandes límites numéricos

¿Listo para resolver?

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

Abrir en el 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

Recursos recomendados de Python

Amplíe sus conocimientos con tutoriales interactivos relacionados, hojas de trucos y comparaciones de códigos.