Sobes.tech
Назад к вопросам
Junior — Middle
94

Как определить временную сложность операции удаления элемента из массива типа слайс?

Компании, где спрашивали
СБЕР дейвайсыСБЕР дейвайсы

Ответ от нейросети

sobes.tech AI

В Go слайс — это структура, которая содержит указатель на массив, длину и ёмкость. При удалении элемента из слайса обычно требуется сдвинуть все последующие элементы на одну позицию влево, чтобы заполнить «дырку».

Временная сложность такой операции — O(n), где n — количество элементов после удаляемого. Это связано с тем, что нужно скопировать (n - индекс_удаляемого - 1) элементов.

Пример удаления элемента по индексу:

func remove(slice []int, i int) []int {
    return append(slice[:i], slice[i+1:]...)
}

Здесь append копирует элементы с slice[i+1:] в позицию после slice[:i], что требует линейного времени от количества копируемых элементов.