<prompt> Orodha iliyounganishwa ya urefu n imetolewa hivi kwamba kila nodi ina kiashirio cha ziada cha nasibu, ambacho kinaweza kuelekeza kwenye nodi yoyote kwenye orodha, au null.Unda nakala ya kina ya orodha. Nakala ya kina inapaswa kujumuisha nodi n mpya kabisa, ambapo kila nodi mpya ina thamani yake iliyowekwa kwa thamani ya nodi yake asili inayolingana. Kielekezi cha kifuatacho na kinasibu cha nodi mpya kinafaa kuelekeza kwenye vifundo vipya katika orodha iliyonakiliwa hivi kwamba viashiria katika orodha asili na orodha iliyonakiliwa vinawakilisha hali sawa ya orodha. Hakuna viashiria kwenye orodha mpya vinavyopaswa kuelekeza nodi kwenye orodha asili .Kwa mfano, ikiwa kuna nodi mbili X na Y katika orodha asili, ambapo X.nasibu -- Y, kisha kwa nodi mbili zinazolingana x na y katika orodha iliyonakiliwa, x.nasibu -- y.Rudisha _kichwa cha orodha iliyounganishwa iliyonakiliwa_.Orodha iliyounganishwa inawakilishwa katika ingizopato kama orodha ya nodi za n. Kila nodi inawakilishwa kama jozi ya val, random_index ambapo: val: nambari kamili inayowakilisha Node.val kiashiria_cha_nasibu: faharasa ya nodi safa kutoka 0 hadi n-1 ambayo kielekezi cha nasibu kinaelekeza, au null ikiwa hakielekezi kwenye nodi yoyote.Msimbo wako tu utapewa kichwa cha orodha asili iliyounganishwa.Mfano wa 1:Ingizo: kichwa 7,null,13,0,11,4,10,2,1,0 Pato: 7,null,13,0,11,4,10,2,1,0Mfano wa 2:Ingizo: kichwa 1,1,2,1Pato: 1,1,2,1Mfano wa 3:Ingizo: kichwa 3,null,3,0,3,nullPato: 3,null,3,0,3,nullVikwazo: 0 n 1000 -104 Node.val 104 Node.random ni null au inaelekeza kwenye nodi fulani katika orodha iliyounganishwa.  <response>: chatunodi ya darasa: def __init__binafsi, val, nextNone, randomNone: self.val val self.next ijayo binafsi.nasibu nasibu def copyRandomListkichwa: kama sio kichwa: kurudi Hakuna curr kichwa huku curr: temp Njia curr.val temp.next curr.next curr.next joto curr curr.next.next curr kichwa huku curr: ikiwa curr.nasibu: curr.next.random curr.random.next curr curr.next.next asili kichwa nakala kichwa.kifuatacho copy_head nakala wakati asili na nakala: orig.next copy.next asili orig.next ikiwa asili: copy.next orig.next nakala copy.next rudisha nakala_kichwamaelezoAlgorithm inafuata hatua hizi:1. Rudia kupitia orodha ya asili iliyounganishwa, ukitengeneza nodi mpya zenye thamani sawa na nodi za asili na uziweke mara baada ya nodi asili kwenye orodha asilia. Sasa tuna orodha iliyoingiliana ambapo kila nodi asili inafuatwa na nakala yake.2. Rudia kupitia orodha iliyoingiliana na uweke viashiria nasibu vya nodi mpya. Kwa kuwa nodi mpya ziko sawa baada ya viasili vyake vinavyolingana, tunaweza kuweka kwa urahisi viashiria nasibu vya nodi mpya kulingana na viashiria nasibu vya nodi asili.3. Tenganisha orodha iliyounganishwa katika orodha mbili tofauti - orodha ya awali na orodha iliyonakiliwa.Kanuni hii inaunda nakala ya kina ya orodha iliyounganishwa na viashiria nasibu bila kutumia nafasi yoyote ya ziada au miundo ya data isipokuwa nodi zenyewe. Utata wa wakati wa kukimbia ni On tunapofanya On tatu tofauti hupitia orodha iliyounganishwa. 