Sobes.tech
Junior — Middle
131

Элементті тәртіпті сақтамай, тұрақты күрделілікпен, тиімді түрде қалай жоюға болады?

Сұралған компаниялар
СБЕР дейвайсыСБЕР дейвайсы

AI-дан жауап

sobes.tech AI

Чтобы удалить элемент из слайса в Go без сохранения порядка элементов и при этом иметь операцию с постоянной сложностью O(1), можно заменить удаляемый элемент последним элементом слайса и затем укоротить слайс на один элемент.

Пример:

func removeUnordered(s []int, i int) []int {
    s[i] = s[len(s)-1] // заменяем элемент i последним
    return s[:len(s)-1] // укорачиваем слайс
}

// Использование:
s := []int{10, 20, 30, 40, 50}
s = removeUnordered(s, 1) // удаляем элемент с индексом 1 (20)
// Теперь s может быть, например, [10, 50, 30, 40]

Такой метод не сохраняет порядок элементов, но работает очень быстро, так как не требует сдвигов элементов.