Junior — Middle
Elementni tartibni saqlamay, lekin operatsiya murakkabligini oshirmasdan, qanday qilib samarali tarzda slice'dan elementni olib tashlash mumkin?
sobes.tech AI
AIdan javob
Go tilida slice-dan elementni o'zgartirish uchun, elementlarni tartibini saqlamasdan va doimiy murakkablik O(1) bilan, o'chiriladigan elementni slice-ning oxirgi elementi bilan almashtirib, so'ngra slice-ning uzunligini birga qisqartirish mumkin.
Misol:
func removeUnordered(s []int, i int) []int {
s[i] = s[len(s)-1] // i elementini oxirgi element bilan almashtiradi
return s[:len(s)-1] // slice-ning uzunligini qisqartiradi
}
// Foydalanish:
s := []int{10, 20, 30, 40, 50}
s = removeUnordered(s, 1) // indeks 1 (20) elementini o'chiradi
// Endi s, masalan, [10, 50, 30, 40] bo'lishi mumkin
Bu usul elementlarning tartibini saqlamaydi, lekin juda tez ishlaydi, chunki elementlarni siljitishga ehtiyoj yo'q.