Junior — Middle
Cum poți elimina eficient un element dintr-un slice fără a păstra ordinea elementelor, menținând complexitatea operației constantă?
sobes.tech AI
Răspuns de la AI
Pentru a elimina un element dintr-un slice în Go fără a păstra ordinea elementelor și cu o operație cu complexitate constantă O(1), poți înlocui elementul de eliminat cu ultimul element al slice-ului și apoi să scurtezi slice-ul cu unul.
Exemplu:
func removeUnordered(s []int, i int) []int {
s[i] = s[len(s)-1] // înlocuiește elementul i cu ultimul
return s[:len(s)-1] // scurtează slice-ul
}
// Utilizare:
s := []int{10, 20, 30, 40, 50}
s = removeUnordered(s, 1) // elimină elementul de la indexul 1 (20)
// Acum s poate fi, de exemplu, [10, 50, 30, 40]
Această metodă nu păstrează ordinea elementelor, dar funcționează foarte rapid, deoarece nu necesită deplasări de elemente.