Middle+
// Gegebene sortierte Scheiben A und B. Scheiben behalten eindeutige Werte bei. Erzeugen Sie eine Vereinigung davon in der sortierten Scheibe RES ohne Duplikate. // A = [1, 3, 5, 7] // B = [1, 2, 3, 7, 9] // RES = [1, 2, 3, 5, 7, 9]
sobes.tech KI
Antwort von AI
Um zwei sortierte Slices mit eindeutigen Werten zu einem einzigen sortierten Slice ohne Duplikate zusammenzuführen, kann man einen Merge-Algorithmus verwenden, ähnlich dem Merge in der Mergesort.
Idee:
- Gehe gleichzeitig mit zwei Indizes durch beide Slices.
- Vergleiche die aktuellen Elemente, füge das kleinere zum Ergebnis hinzu und bewege den entsprechenden Index.
- Wenn die Elemente gleich sind, füge eines davon hinzu und bewege beide Indizes.
Beispiel in Go:
func unionSortedSlices(A, B []int) []int {
i, j := 0, 0
res := make([]int, 0, len(A)+len(B))
for i < len(A) && j < len(B) {
if A[i] < B[j] {
res = append(res, A[i])
i++
} else if A[i] > B[j] {
res = append(res, B[j])
j++
} else { // A[i] == B[j]
res = append(res, A[i])
i++
j++
}
}
// Füge die verbleibenden Elemente hinzu
for i < len(A) {
res = append(res, A[i])
i++
}
for j < len(B) {
res = append(res, B[j])
j++
}
return res
}
Dieses Code stellt sicher, dass im resultierenden Slice alle eindeutigen Elemente aus A und B in aufsteigender Reihenfolge enthalten sind.