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

Бул код эки тизмени өтүп, учурдагы элементтерди салыштырып, кичүү элементти натыйкага кошот. Эгер элементтер бирдей болсо, бир гана кошуп, эки индекстин да алдыга жылышын камсыз кылат, бул дублёраларды алдын алат. Натыйжада, уникалдуу маанилер менен сорттолгон тизмени аласыз.