Sobes.tech
Junior — Middle

Comment déterminer la complexité temporelle de l'opération de suppression d'un élément d'un tableau de type slice?

sobes.tech IA

Réponse de l'IA

En Go, une tranche (slice) est une structure qui contient un pointeur vers un tableau, une longueur et une capacité. Lors de la suppression d'un élément d'une tranche, il est généralement nécessaire de décaler tous les éléments suivants d'une position vers la gauche pour combler le "trou".

La complexité temporelle de cette opération est O(n), où n est le nombre d'éléments après celui supprimé. Cela est dû au fait qu'il faut copier (n - index_supprimé - 1) éléments.

Exemple de suppression d'un élément par index:

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

Ici, append copie les éléments de slice[i+1:] à la position après slice[:i], ce qui nécessite un temps linéaire en fonction du nombre d'éléments copiés.