Sobes.tech
Junior — Middle

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

sobes.tech AI

Răspuns de la AI

În Go, un slice este o structură care conține un pointer către un array, o lungime și o capacitate. La eliminarea unui element dintr-un slice, de obicei este necesar să deplasați toate elementele ulterioare o poziție spre stânga pentru a umple "gaura".

Complexitatea temporară a acestei operații este O(n), unde n este numărul de elemente după cel eliminat. Acest lucru se datorează faptului că trebuie copiate (n - indexul_eliminat - 1) elemente.

Exemplu de eliminare a unui element după index:

func remove(slice []int, i int) []int {
    return append(slice[:i], slice[i+1:]...)
}

Aici, append copiază elementele din slice[i+1:] în poziția după slice[:i], ceea ce necesită timp liniar în funcție de numărul de elemente copiate.