Sobes.tech
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.