Junior — Middle
Ի՞նչ է ժամանակային բարդությունը դինամիկ զանգվածի սկզբին կամ կեսին տարրեր ավելացնելու գործողության համար։
sobes.tech AI
Պատասխան AI-ից
Դինամիկ զանգի սկզբին կամ միջինում տարր ավելացնելու գործողության ժամանակային բարդությունը սովորաբար կազմում է O(n), որտեղ n զանգի տարրերի քանակն է:
Սա կապված է այն բանի հետ, որ ավելացման հետո անհրաժեշտ է տեղափոխել բոլոր հաջորդող տարրերը մեկ դիրք աջ, որպեսզի ազատվի տեղ նոր տարրի համար: Ամենավատ դեպքերում, երբ ավելացնում ենք սկզբում, տեղափոխվում են բոլոր տարրերը:
Go լեզվով օրինակ:
package main
import "fmt"
func insertAt(slice []int, index int, value int) []int {
slice = append(slice, 0) // ընդլայնում ենք սլայը
copy(slice[index+1:], slice[index:]) // տեղափոխում ենք տարրերը
slice[index] = value // ավելացնում ենք արժեքը
return slice
}
func main() {
s := []int{1, 2, 3, 4}
s = insertAt(s, 1, 99) // ավելացնել 99 դիրքում 1
fmt.Println(s) // [1 99 2 3 4]
}