Junior — Middle
Какво е нивото на времева сложност на операцията за добавяне на елемент към края на масив с помощта на slice?
sobes.tech AI
Отговор от AI
В Go операцията за добавяне на елемент в края на слайс (append) има амортизирана времева сложност O(1).
Обяснение:
-
Ако слайсът има достатъчно капацитет (
capacity), добавянето на елемент става просто чрез записване в следващия свободен индекс — това е операция с константно време. -
Ако капацитетът не е достатъчен, се заделя нов масив с по-голям размер, старите елементи се копират и се добавя новият — тази операция отнема O(n), където n е текущият размер на слайса.
Въпреки това, тъй като такива преразпределения не се случват при всяко добавяне, а само периодично, средната (амортизирана) сложност на добавяне остава O(1).