<prompt> Unacheza mchezo unaohusisha safu ya mviringo ya nambari kamili zisizo sufuri nums. Kila nambarii inaashiria idadi ya fahirisi mbelenyuma ambazo lazima usogeze ikiwa unapatikana katika faharasa i: Ikiwa nambarii ni chanya, sogeza nambarii hatua mbele, na Ikiwa nambarii ni hasi, sogeza nambarii hatua nyuma.Kwa kuwa safu ni mviringo , unaweza kudhani kuwa kusonga mbele kutoka kwa kipengele cha mwisho kunakuweka kwenye kipengele cha kwanza, na kusonga nyuma kutoka kwa kipengele cha kwanza kunakuweka kwenye kipengele cha mwisho.mzunguko katika safu huwa na mfuatano wa fahirisi seq ya urefu k ambapo: Kufuata sheria za harakati hapo juu husababisha mfuatano wa faharasa unaorudiwa seq0 - seq1 - ... - seqk - 1 - seq0 - ... Kila numsseqj aidha ni zote chanya au zote hasi. k 1Rejesha kweli _ikiwa kuna mzunguko katika_ namba_, au_ sivyo _vinginevyo_.Mfano wa 1:Ingizo: nambari 2,-1,1,2,2Pato: kweliMaelezo: Grafu inaonyesha jinsi fahirisi zimeunganishwa. Nodi nyeupe zinaruka mbele, wakati nyekundu inaruka nyuma.Tunaweza kuona mzunguko 0 -- 2 -- 3 -- 0 -- ..., na nodi zake zote ni nyeupe kuruka katika mwelekeo sawa.Mfano wa 2:Ingizo: nambari -1,-2,-3,-4,-5,6Pato: si kweliMaelezo: Grafu inaonyesha jinsi fahirisi zimeunganishwa. Nodi nyeupe zinaruka mbele, wakati nyekundu inaruka nyuma.Mzunguko pekee ni wa ukubwa wa 1, kwa hivyo tunarudi uongo.Mfano wa 3:Ingizo: nambari 1,-1,5,1,4Pato: kweliMaelezo: Grafu inaonyesha jinsi fahirisi zimeunganishwa. Nodi nyeupe zinaruka mbele, wakati nyekundu inaruka nyuma.Tunaweza kuona mzunguko 0 -- 1 -- 0 -- ..., na wakati ni wa ukubwa 1, ina nodi ya kuruka mbele na nodi inayoruka nyuma, kwa hivyo sio mzunguko. .Tunaweza kuona mzunguko wa 3 -- 4 -- 3 -- ..., na nodi zake zote ni nyeupe kuruka kwa mwelekeo sawa.Vikwazo: 1 nums.length 5000 -1000 nambarii 1000 nambarii ! 0Fuata: Je, unaweza kulitatua katika uchangamano wa wakati On na O1 uchangamano wa ziada wa nafasi?  <response>: chatudef circularArrayLoopnambari: Orodhaint - bool: N leninambari kwa mimi katika safuN: polepole, haraka mimi, i wakati Kweli: polepole getNextIndexpolepole, nambari haraka getNextIndexgetNextIndexharaka, nambari, nambari ikiwa polepole ! haraka na numspolepole numsharaka 0: mapumziko ikiwa polepole haraka: mapumziko kwingine: endelea mzunguko Uongo kuanza polepole wakati anza ! polepole: mzunguko getNextIndexstart, nums start start getNextIndexanza, nambari ikiwa sio mzunguko: kurudi Kweli kurudi Uongodef getNextIndexidx: int, nums: Listint - int: N leninambari return idx numsidx NmaelezoAlgorithm imeundwa kugundua mzunguko katika safu ya duara. Inatumia njia ya polepole na ya haraka ya kielekezi iliyochochewa na algoriti ya Floyds Tortoise and Hare. Kielekezi polepole husogea hatua moja baada ya nyingine na kielekezi cha haraka kinasogea hatua mbili kwa wakati mmoja. Ikiwa kuna mzunguko katika safu, viashiria vya polepole na vya haraka hatimaye vitakutana kwenye faharisi sawa.Algorithm inarudia kupitia safu nzima ili kugundua mzunguko wowote unaowezekana na faharasa ya kuanzia. Kwa kila faharasa, viashirio vya polepole na vya haraka vinaanzishwa, na kitendakazi cha getNextIndex kinatumika kupata faharasa inayofuata, kwa kuzingatia asili ya mduara wa safu. Kitanzi kinaendelea kutekeleza mradi viashiria vya polepole na vya haraka viwe tofauti na bidhaa ya numspolepole na numsharaka iwe chanya.Ikiwa viashiria vya polepole na vya haraka vinakutana, kuna uwezekano wa kuwa na mzunguko. Ili kuthibitisha hili, algorithm huangalia ikiwa kuna mzunguko kwa kuvuka kutoka fahirisi ya mwanzo, na ikiwa hakuna mzunguko, inarudi kweli. Ikiwa hakuna mzunguko unaopatikana, algorithm inaendelea kutafuta safu kwa mizunguko.Hatimaye, ikiwa hakuna mzunguko katika safu nzima, inarudi uongo. 