Junior — Middle
Elementin sırasını qorumaq və əməliyyatın mürəkkəbliyini dəyişmədən, bir dilimdən elementi effektiv şəkildə necə silmək olar?
sobes.tech Süni İntellekt
AI-dan cavab
Go dilində bir dilimdən (slice) elementi silmək üçün, elementlərin sırasını qorumaq və sabit vaxt mürəkkəbliyi O(1) ilə, silinəcək elementi dilimin son elementi ilə dəyişdirib, sonra dilimi bir element qısaltmaq olar.
Nümunə:
func removeUnordered(s []int, i int) []int {
s[i] = s[len(s)-1] // i elementini son elementlə dəyişdirir
return s[:len(s)-1] // dilimi qısaldır
}
// İstifadə:
s := []int{10, 20, 30, 40, 50}
s = removeUnordered(s, 1) // indeks 1-dəki elementi (20) silir
// İndi s, məsələn, [10, 50, 30, 40] ola bilər
Bu metod elementlərin sırasını qorumaqdan imtina edir, amma çox sürətlidir, çünki elementlərin hərəkət etdirilməsinə ehtiyac yoxdur.