Sobes.tech
Junior — Middle

Ինչպե՞ս արդյունավետորեն հեռացնել տարր սլայսից՝ առանց տարրերի կարգը պահպանելու, և միևնույն ժամանակ չանցնելով մշտական բարդության գործողության սահմանը։

sobes.tech AI

Պատասխան AI-ից

Go-ում սլայսից տարր հեռացնելու համար՝ առանց տարրերի կարգը պահպանելու և մշտական բարդությամբ O(1) գործողությամբ, դուք կարող եք հեռացվող տարրին փոխարինել սլայսի վերջին տարրով և ապա սլայսը կրճատել մեկով:

Օրինակ՝

func removeUnordered(s []int, i int) []int {
    s[i] = s[len(s)-1] // փոխարինում է i տարրին վերջինով
    return s[:len(s)-1] // կրճատում է սլայսը
}

// Օգտագործում՝
s := []int{10, 20, 30, 40, 50}
s = removeUnordered(s, 1) // հեռացնում է 1- ինդեքսի տարր (20)
// Հիմա s կարող է լինել, օրինակ, [10, 50, 30, 40]

Այս մեթոդը չի պահպանում տարրերի կարգը, բայց շատ արագ է աշխատում, քանի որ տարրերի տեղափոխում չի պահանջվում։