Sobes.tech
Junior — Middle

Care este nivelul de complexitate temporală al operației de adăugare a unui element la sfârșitul unui array folosind un slice?

sobes.tech AI

Răspuns de la AI

În Go, operația de adăugare a unui element la sfârșitul unui slice (append) are o complexitate temporară amortizată de O(1).

Explicație:

  • Dacă slice-ul are suficientă capacitate (capacity), adăugarea unui element se face pur și simplu prin scrierea la următorul index liber — aceasta este o operație în timp constant.

  • Dacă capacitatea nu este suficientă, se alocă un nou array de dimensiune mai mare, se copiază elementele vechi și se adaugă noul element — această operație durează O(n), unde n este dimensiunea curentă a slice-ului.

Totuși, deoarece astfel de redistribuiri nu au loc la fiecare adăugare, ci doar periodic, complexitatea medie (amortizată) a adăugării rămâne O(1).