Junior — Middle
¿Cómo se puede eliminar eficazmente un elemento de una rebanada sin mantener el orden de los elementos, sin superar la complejidad constante de la operación?
sobes.tech AI
Respuesta de la IA
Para eliminar un elemento de un slice en Go sin mantener el orden de los elementos y con una operación de complejidad constante O(1), se puede reemplazar el elemento a eliminar con el último elemento del slice y luego acortar el slice en uno.
Ejemplo:
func removeUnordered(s []int, i int) []int {
s[i] = s[len(s)-1] // reemplaza el elemento i con el último
return s[:len(s)-1] // acorta el slice
}
// Uso:
s := []int{10, 20, 30, 40, 50}
s = removeUnordered(s, 1) // elimina el elemento en el índice 1 (20)
// Ahora s puede ser, por ejemplo, [10, 50, 30, 40]
Este método no mantiene el orden de los elementos, pero es muy rápido, ya que no requiere desplazamientos de elementos.