Wawancara 150 TeratasMudah

Salin Daftar Dengan Penunjuk Acak

Panduan terperinci dan implementasi Python untuk masalah 'Salin Daftar Dengan Penunjuk Acak'.

Pernyataan Masalah

Mudah

Daftar tertaut dengan panjang n diberikan sedemikian rupa sehingga setiap simpul berisi penunjuk acak tambahan, yang dapat menunjuk ke simpul mana pun dalam daftar, atau nol.

Buat salinan daftar yang mendalam. Salinan dalam harus terdiri dari tepat n node baru, dengan setiap node baru nilainya disetel ke nilai node aslinya yang sesuai. Baik penunjuk berikutnya maupun penunjuk acak dari simpul baru harus menunjuk ke simpul baru dalam daftar yang disalin sehingga penunjuk dalam daftar asli dan daftar yang disalin mewakili status daftar yang sama.

Daftar ini direpresentasikan sebagai daftar pasangan [val, random_index] di mana random_index adalah indeks dari node yang ditunjuk oleh penunjuk acak, atau -1 jika menunjuk ke nol. Terapkan fungsi copyRandomList(head: list) -> list yang mengembalikan salinan dalam dalam format yang sama.

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

Contoh

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?
Pertimbangkan untuk menggunakan struktur data khusus Daftar Tertaut seperti kumpulan atau tumpukan.
Edge Cases to Watch
  • Struktur masukan kosong
  • Masukan elemen tunggal
  • Batasan angka yang besar

Siap Memecahkannya?

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

Buka di 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

Sumber Daya Python yang Direkomendasikan

Perluas pengetahuan Anda dengan tutorial interaktif terkait, lembar contekan, dan perbandingan kode.