Junior — Middle
Jaki jest poziom złożoności czasowej operacji dodania elementu na końcu tablicy za pomocą slice'a?
sobes.tech AI
Odpowiedź od AI
W Go operacja dodania elementu na koniec slice'a (append) ma amortyzowaną złożoność czasową O(1).
Wyjaśnienie:
-
Jeśli slice ma wystarczającą pojemność (
capacity), dodanie elementu polega na zapisaniu go w następnym wolnym indeksie — jest to operacja o czasie stałym. -
Jeśli pojemność jest niewystarczająca, alokowany jest nowy, większy tablica, stare elementy są kopiowane, a następnie dodawany jest nowy — ta operacja zajmuje O(n), gdzie n to obecny rozmiar slice'a.
Jednakże, ponieważ takie ponowne alokacje nie zachodzą przy każdym dodaniu, lecz tylko okresowo, średnia (amortyzowana) złożoność dodawania pozostaje O(1).