Middle
Tarefa: combinar dois slices ordenados com valores únicos em um único slice ordenado com valores únicos
sobes.tech IA
Resposta da IA
Para combinar duas listas ordenadas com valores únicos numa única lista ordenada com valores únicos, pode usar um algoritmo de fusão, semelhante à fase de fusão na ordenação por fusão.
Exemplo em 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], adiciona apenas uma vez
result = append(result, a[i])
i++
j++
}
}
// Adiciona os elementos restantes
for i < len(a) {
result = append(result, a[i])
i++
}
for j < len(b) {
result = append(result, b[j])
j++
}
return result
}
Este código percorre ambas as listas, compara os elementos atuais e adiciona o menor ao resultado. Se os elementos forem iguais, adiciona um e avança ambos os índices para evitar duplicados. No final, obtém-se uma lista ordenada com valores únicos.