Назад к вопросам
Junior — Middle
73
Какой уровень временной сложности у операции добавления элемента в конец массива с помощью слайса?
Ответ от нейросети
sobes.tech AI
В Go операция добавления элемента в конец слайса (append) имеет амортизированную временную сложность O(1).
Объяснение:
-
Если у слайса достаточно выделённой ёмкости (
capacity), то добавление элемента происходит просто путём записи в следующий свободный индекс — это операция за константное время. -
Если ёмкости недостаточно, происходит выделение нового массива большего размера, копирование старых элементов и добавление нового — эта операция занимает O(n), где n — текущий размер слайса.
Однако, поскольку такие перераспределения происходят не при каждом добавлении, а лишь периодически, средняя (амортизированная) сложность добавления остаётся O(1).