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