Sobes.tech
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.