Sobes.tech
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).