Sobes.tech
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.