Junior — Middle
Kā efektīvi izņemt elementu no sērijas, nezaudējot elementu kārtību un nepārsniedzot operācijas pastāvīgo sarežģītību?
sobes.tech AI
Atbilde no AI
Lai noņemtu elementu no sēklas Go valodā, nezaudējot elementu kārtību un ar pastāvīgu sarežģītību O(1), jūs varat aizstāt dzēšamo elementu ar pēdējo elementu sēklā un pēc tam saīsināt sēklu par vienu.
Piemērs:
func removeUnordered(s []int, i int) []int {
s[i] = s[len(s)-1] // aizvieto elementu i ar pēdējo
return s[:len(s)-1] // saīsina sēklu
}
// Lietošana:
s := []int{10, 20, 30, 40, 50}
s = removeUnordered(s, 1) // izņem elementu ar indeksu 1 (20)
// Tagad s var būt, piemēram, [10, 50, 30, 40]
Šī metode nezaudē elementu kārtību, bet darbojas ļoti ātri, jo nav nepieciešami elementu pārvietojumi.