Junior — Middle
Kokia yra laiko sudėtingumo lygis operacijai pridėti elementą į masyvo pabaigą naudojant slice?
sobes.tech AI
Atsakymas iš AI
Go kalboje, pridėjimo operacija prie galo slice (append) turi amortizuotą laiko sudėtingumą O(1).
Paaiškinimas:
-
Jei slice turi pakankamai talpos (
capacity), elementą paprasčiausiai įrašome į kitą laisvą indeksą — tai operacija vyksta pastoviu laiku. -
Jei talpa nėra pakankama, priskiriamas naujas, didesnis masyvas, kopijuojami seni elementai ir pridedamas naujas — ši operacija užtrunka O(n), kur n yra dabartinis slice dydis.
Tačiau, kadangi tokie perplanavimai nevyksta kiekvieno pridėjimo metu, o tik periodiškai, vidutinė (amortizuota) pridėjimo sudėtingumas išlieka O(1).