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.