Junior — Middle
¿Cuál es el nivel de complejidad temporal de la operación de agregar un elemento al final de un array usando un slice?
sobes.tech AI
Respuesta de la IA
En Go, la operación de añadir un elemento al final de un slice (append) tiene una complejidad temporal amortizada de O(1).
Explicación:
-
Si el slice tiene suficiente capacidad asignada (
capacity), añadir un elemento simplemente implica escribir en el siguiente índice libre, lo cual es una operación de tiempo constante. -
Si no hay suficiente capacidad, se asigna un nuevo array de mayor tamaño, se copian los elementos antiguos y se añade el nuevo, lo cual toma O(n), donde n es el tamaño actual del slice.
Sin embargo, dado que estas redistribuciones no ocurren en cada adición, sino solo periódicamente, la complejidad media (amortizada) de añadir sigue siendo O(1).