Sobes.tech
Junior — Middle

Cum se determină complexitatea temporală a operației de ștergere a unui element dintr-un slice în Go?

sobes.tech AI

Răspuns de la AI

În Go, eliminarea unui element dintr-un slice necesită de obicei deplasarea elementelor, astfel încât complexitatea operației depinde de poziția elementului de eliminat:

  • Dacă se elimină un element de la început sau din mijlocul slice-ului, toate elementele următoare sunt deplasate cu o poziție spre stânga, ceea ce oferă o complexitate O(n), unde n este numărul de elemente după cel eliminat.

  • Dacă se elimină un element de la sfârșitul slice-ului, deplasarea nu este necesară, iar operația poate fi aproape de O(1).

Exemplu de eliminare a unui element la indexul i:

s = append(s[:i], s[i+1:]...)

Aici, se creează un nou slice, în care sunt copiate elementele înainte și după i, ceea ce necesită copierea elementelor și are o complexitate liniară în funcție de numărul de elemente copiate.