<prompt> Tekeleza darasa la RandomizedSet: RandomizedSet Inaanzisha kipengee cha RandomizedSet. insert boolint val Huweka kipengee val kwenye seti ikiwa haipo. Hurejesha kweli ikiwa kipengee hakikuwepo, false vinginevyo. bool removeint val Huondoa kipengee val kutoka kwa seti kama kipo. Hurejesha kweli ikiwa kipengee kilikuwepo, false vinginevyo. int getRandom Hurejesha kipengele nasibu kutoka kwa seti ya sasa ya vipengele imehakikishwa kuwa angalau kipengele kimoja kinapatikana wakati njia hii inaitwa. Kila kipengele lazima kiwe na uwezekano sawa wa kurejeshwa.Lazima utekeleze majukumu ya darasa ili kila chaguo la kukokotoa lifanye kazi katika wastani O1 uchangamano wa wakati.Mfano wa 1:Ingizo RandomizedSet , ingiza , ondoa , ingiza , getRandom , ondoa , ingiza , getRandom , 1, 2, 2, , 1, 2, Patonull, kweli, uongo, kweli, 2, kweli, uongo, 2UfafanuziRandomizedSet randomizedSet new RandomizedSet;randomizedSet.insert1; Inaingiza 1 kwenye seti. Hurejesha kweli kama 1 iliwekwa kwa ufanisi.randomizedSet.ondoa2; Hurejesha sivyo kwani 2 haipo kwenye seti.randomizedSet.insert2; Inaingiza 2 kwa seti, inarudi kweli. Seti sasa ina 1,2.randomizedSet.getRandom; getRandom inapaswa kurudi ama 1 au 2 nasibu.randomizedSet.ondoa1; Huondoa 1 kutoka kwa seti, inarudi kweli. Set sasa ina 2.randomizedSet.insert2; 2 ilikuwa tayari kwenye seti, kwa hivyo rudisha sivyo.randomizedSet.getRandom; Kwa kuwa 2 ndio nambari pekee kwenye seti, getRandom itarudisha 2 kila wakati.Vikwazo: -231 val 231 - 1 Angalau zaidi simu 2 105 zitapigwa ingiza, remove na getRandom. Kutakuwa na angalau kipengele kimoja katika muundo wa data wakati getRandom inapoitwa.  <response>: chatukuagiza bila mpangiliodarasa RandomizedSet: def __init__binafsi: self.index_map self.nums def insertbinafsi, val: int - bool: ikiwa inafaa katika self.index_map: kurudi Uongo self.index_mapval lenself.nums nambari.jiambatanishaval kurudi Kweli def removeself, val: int - bool: ikiwa haiko kwenye self.index_map: kurudi Uongo mwisho nambari binafsi-1 self.index_maplast self.index_mapval self.numsself.index_mapval mwisho self.nums.pop del self.index_mapval kurudi Kweli def getRandomself - int: rudisha nambari binafsirandom.randint0, lenself.nums - 1maelezoKanuni hutumia mchanganyiko wa miundo yote miwili ya data, HashMap na ArrayList au unordered_map na vekta katika C. HashMap inatumika kuhifadhi thamani na fahirisi zao sambamba katika ArrayList.1. Tunapoingiza thamani, kwanza tunaangalia kama thamani iko tayari kwenye HashMap. Ikiwa haipo, tunaongeza thamani kwenye HashMap na faharasa yake katika ArrayList, na pia kuongeza thamani kwenye ArrayList.2. Tunapoondoa thamani, tunaangalia kama thamani iko kwenye HashMap. Ikiwa iko, tunabadilisha thamani ya kuondolewa na thamani ya mwisho katika ArrayList, sasisha HashMap na faharasa mpya ya thamani ya mwisho, na kuondoa thamani ya mwisho kutoka ArrayList. Baada ya hapo, tunaondoa thamani kutoka kwa HashMap.3. Ili kupata thamani nasibu, tunatumia chaguo la kukokotoa nasibu kutengeneza faharasa nasibu ndani ya safu ya ArrayList na kurudisha thamani katika faharasa hiyo.Kwa kutumia mseto huu wa miundo ya data, tunaweza kufikia wastani wa uchangamano wa muda wa O1 kwa kila mojawapo ya vipengele hivi. 