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

«Как удалить значение из начала слайса за константу, порядок элементов не важен» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Go можно удалить элемент из начала слайса за O(1), если порядок не важен, просто заменив первый элемент последним и уменьшив длину слайса:

s := []int{1, 2, 3, 4, 5}
s[0] = s[len(s)-1]  // заменяем первый элемент последним
s = s[:len(s)-1]    // укорачиваем слайс

Это работает за константное время, так как не требует перемещения элементов. Однако изменяет порядок элементов. Для сохранения порядка потребуется O(n) операция сдвига (s = s[1:]).