Sobes.tech
Junior — Middle

Milline on ajakulude keerukuse tase operatsioonil, mille käigus lisatakse element massiivi lõppu, kasutades slice?

sobes.tech AI

Vastus AI-lt

Go keeles operatsioon, mille käigus element lisatakse lõppu slice'ile (append), omab amortiseeritud ajakulu O(1).

Selgitus:

  • Kui slice'il on piisavalt mahtu (capacity), siis element lisatakse lihtsalt kirjutades järgmisele vabadale indeksile — see on konstanta ajaga operatsioon.

  • Kui maht ei ole piisav, eraldatakse uus, suurem massiiv, kopeeritakse vanad elemendid ja lisatakse uus — see operatsioon võtab aega O(n), kus n on hetke slice'i suurus.

Kuid kuna sellised ümberjaotamised ei toimu iga lisamise korral, vaid ainult perioodiliselt, jääb keskmine (amortiseeritud) lisamise keerukus O(1).