Sobes.tech
Назад к вопросам
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), хотя отдельные операции могут быть дороже из-за перераспределения памяти.