Middle
Vazifa: ikkita tartiblangan va noyob qiymatlarni o'z ichiga olgan ikkita slice-ni birlashtirib, yagona tartiblangan slice hosil qilish
sobes.tech AI
AIdan javob
Ikki tartiblangan va noyob qiymatlarni o'z ichiga olgan ikki tartiblangan ro'yxatni, noyob qiymatlarni o'z ichiga olgan tartiblangan yagona ro'yxatga birlashtirish uchun, birlashish algoritmidan foydalanish mumkin, bu birlashish bosqichiga o'xshaydi.
Go tilida misol:
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], faqat bir marta qo'shish
result = append(result, a[i])
i++
j++
}
}
// Qolgan elementlarni qo'shish
for i < len(a) {
result = append(result, a[i])
i++
}
for j < len(b) {
result = append(result, b[j])
j++
}
return result
}
Ushbu kod ikkala ro'yxatni ham o'tib, hozirgi elementlarni solishtiradi va kichik bo'lganini natijaga qo'shadi. Agar elementlar teng bo'lsa, faqat birini qo'shadi va duplikatlarni oldini olish uchun ikkala indeksni ham oshiradi. Natijada, noyob qiymatlarni o'z ichiga olgan tartiblangan ro'yxat olinadi.