Middle
Εργασία: συνδυάστε δύο ταξινομημένα slices με μοναδικές τιμές σε ένα ταξινομημένο slice με μοναδικές τιμές
sobes.tech AI
Απάντηση από AI
Για να συνδυάσετε δύο ταξινομημένες λίστες με μοναδικές τιμές σε μία ταξινομημένη λίστα με μοναδικές τιμές, μπορείτε να χρησιμοποιήσετε έναν αλγόριθμο συγχώνευσης, παρόμοιο με το στάδιο συγχώνευσης στην ταξινόμηση με συγχώνευση.
Παράδειγμα σε 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], προσθέστε μόνο μία φορά
result = append(result, a[i])
i++
j++
}
}
// Προσθέστε τα υπόλοιπα στοιχεία
for i < len(a) {
result = append(result, a[i])
i++
}
for j < len(b) {
result = append(result, b[j])
j++
}
return result
}
Αυτός ο κώδικας διατρέχει και τις δύο λίστες, συγκρίνει τα τρέχοντα στοιχεία και προσθέτει το μικρότερο στο αποτέλεσμα. Αν τα στοιχεία είναι ίσα, προσθέτει μόνο ένα και προχωρά και στους δύο δείκτες για να αποφύγει διπλότυπα. Στο τέλος, λαμβάνουμε μια ταξινομημένη λίστα με μοναδικές τιμές.