Назад к вопросам
СБЕР дейвайсы
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], что требует линейного времени от количества копируемых элементов.