Middle
Užduotis: sujungti du surūšiuotus slice su unikaliosiomis reikšmėmis į vieną surūšiuotą slice su unikaliosiomis reikšmėmis
sobes.tech AI
Atsakymas iš AI
Norint sujungti du surūšiuotus unikalių reikšmių sąrašus į vieną surūšiuotą unikalių reikšmių sąrašą, galima naudoti sujungimo algoritmą, panašų į sujungimo etapą susijungimo rūšiavime.
Pavyzdys Go kalba:
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], pridėti tik vieną kartą
result = append(result, a[i])
i++
j++
}
}
// Pridėti likusius elementus
for i < len(a) {
result = append(result, a[i])
i++
}
for j < len(b) {
result = append(result, b[j])
j++
}
return result
}
Šis kodas pereina per abi sąrašus, lygina einamuosius elementus ir į rezultatą įrašo mažesnį. Jei elementai yra lygūs, įrašo tik vieną ir abiejų indeksų padidinimą, kad išvengtų pasikartojimų. Galiausiai gaunate surūšiuotą sąrašą su unikaliomis reikšmėmis.