Middle
Առաջադրանք: միացնել երկու դասավորված slice-ներ՝ յուրահատուկ արժեքներով՝ մեկ դասավորված slice-ով՝ յուրահատուկ արժեքներով
sobes.tech AI
Պատասխան AI-ից
Երկու դասավորված և եզակի արժեքներ պարունակող ցանկերը միացնելու համար, կարելի է օգտագործել միաձուլման ալգորիթմ, որը նման է միաձուլման փուլին միաձուլման դասակարգման ժամանակ:
Օրինակ Go-ում՝
func mergeUnique(a, b []int) []int {
result := make([]int, 0, len(a)+len(b))
i, j := 0, 0
for i < len(a) && j < len(b) {
if a[i] < b[j] {
result = append(result, a[i])
i++
} else if a[i] > b[j] {
result = append(result, b[j])
j++
} else { // a[i] == b[j], ավելացրեք միայն մեկ անգամ
result = append(result, a[i])
i++
j++
}
}
// Ավելացրեք մնացած տարրերը
for i < len(a) {
result = append(result, a[i])
i++
}
for j < len(b) {
result = append(result, b[j])
j++
}
return result
}
Այս կոդը անցնում է երկու ցանկերով, համեմատում է ընթացիկ տարրերը և ավելացնում փոքրին արդյունքին: Եթե տարրերը հավասար են, ավելացնում է միայն մեկը և առաջ է գնում երկու ինդեքսները՝ կրկնօրինակները խուսափելու համար: Վերջում ստանում եք դասավորված ցանկ՝ եզակի արժեքներով։