Middle
Taak: combineer twee gesorteerde slices met unieke waarden tot één gesorteerde slice met unieke waarden
sobes.tech AI
Antwoord van AI
Om twee gesorteerde lijsten met unieke waarden samen te voegen tot één gesorteerde lijst met unieke waarden, kan een fusie-algoritme worden gebruikt, vergelijkbaar met de fusiefase in mergesort.
Voorbeeld in 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], voeg slechts één keer toe
result = append(result, a[i])
i++
j++
}
}
// Voeg de resterende elementen toe
for i < len(a) {
result = append(result, a[i])
i++
}
for j < len(b) {
result = append(result, b[j])
j++
}
return result
}
Deze code doorloopt beide lijsten, vergelijkt de huidige elementen en voegt het kleinste toe aan het resultaat. Als de elementen gelijk zijn, voegt hij er één toe en verhoogt beide indices om duplicaten te voorkomen. Uiteindelijk krijg je een gesorteerde lijst met unieke waarden.