Sobes.tech
Middle

Ülesanne: ühendada kaks sorteeritud slice'i unikaalsete väärtustega ühte sorteeritud slice'iga, millel on unikaalsed väärtused

sobes.tech AI

Vastus AI-lt

Kaks järjestatud ja unikaalsete väärtustega loendi ühendamiseks üheks järjestatud ja unikaalsete väärtustega loendiks saab kasutada sulandumise algoritmi, mis sarnaneb ühendamise etappiga ühendusjärjestuses.

Näide Go keeles:

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], lisa ainult üks kord
            result = append(result, a[i])
            i++
            j++
        }
    }

    // Lisa ülejäänud elemendid
    for i < len(a) {
        result = append(result, a[i])
        i++
    }
    for j < len(b) {
        result = append(result, b[j])
        j++
    }

    return result
}

See kood läbib mõlemad loendid, võrdleb praeguseid elemente ja lisab väiksema tulemusele. Kui elemendid on võrdsed, lisab ainult ühe ja suurendab mõlema indeksi, et vältida duplikaate. Lõpptulemusena saadakse järjestatud loend unikaalsete väärtustega.