Sobes.tech
Junior — Middle

Какво е нивото на времева сложност на операцията за добавяне на елемент към края на масив с помощта на slice?

sobes.tech AI

Отговор от AI

В Go операцията за добавяне на елемент в края на слайс (append) има амортизирана времева сложност O(1).

Обяснение:

  • Ако слайсът има достатъчно капацитет (capacity), добавянето на елемент става просто чрез записване в следващия свободен индекс — това е операция с константно време.

  • Ако капацитетът не е достатъчен, се заделя нов масив с по-голям размер, старите елементи се копират и се добавя новият — тази операция отнема O(n), където n е текущият размер на слайса.

Въпреки това, тъй като такива преразпределения не се случват при всяко добавяне, а само периодично, средната (амортизирана) сложност на добавяне остава O(1).