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]
Такой метод не сохраняет порядок элементов, но работает очень быстро, так как не требует сдвигов элементов.