Middle
Compito: unire due slice ordinati con valori unici in un unico slice ordinato con valori unici
sobes.tech AI
Risposta dell'AI
Per unire due liste ordinate con valori unici in una singola lista ordinata con valori unici, si può usare un algoritmo di fusione, simile alla fase di fusione nel merge sort.
Esempio 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], aggiungi una sola volta
result = append(result, a[i])
i++
j++
}
}
// Aggiungi gli elementi rimanenti
for i < len(a) {
result = append(result, a[i])
i++
}
for j < len(b) {
result = append(result, b[j])
j++
}
return result
}
Questo codice attraversa entrambe le liste, confronta gli elementi correnti e aggiunge quello più piccolo al risultato. Se gli elementi sono uguali, ne aggiunge uno solo e avanza entrambi gli indici per evitare duplicati. Alla fine, si ottiene una lista ordinata con valori unici.