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
}
Ин код ҳарду рӯйхатро мегузарад, элементҳои ҳозираро муқоиса мекунад ва хурдтаринро ба натиҷа илова мекунад. Агар элементҳо баробар бошанд, танҳо яке илова мекунад ва ҳарду индексро пеш мебарад, то такрорҳоро пешгирӣ кунад. Дар охир, рӯйхати ба ҳам рўзшуда бо арзишҳои беназир ба даст меояд.