Sobes.tech
Junior — Middle

Qual é o nível de complexidade temporal da operação de adicionar um elemento ao final de um array usando um slice?

sobes.tech IA

Resposta da IA

No Go, a operação de adicionar um elemento ao final de um slice (append) tem uma complexidade de tempo amortizada de O(1).

Explicação:

  • Se o slice tiver capacidade suficiente (capacity), a adição de um elemento ocorre simplesmente escrevendo no próximo índice livre — essa operação é de tempo constante.

  • Se a capacidade não for suficiente, um novo array de maior tamanho é alocado, os elementos antigos são copiados e o novo elemento é adicionado — essa operação leva O(n), onde n é o tamanho atual do slice.

No entanto, como essas redistribuições não ocorrem a cada adição, mas apenas periodicamente, a complexidade média (amortizada) de adicionar permanece O(1).