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