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