Sobes.tech
Middle

Tarea: combinar dos slices ordenados con valores únicos en un solo slice ordenado con valores únicos

sobes.tech AI

Respuesta de la IA

Para combinar dos listas ordenadas con valores únicos en una sola lista ordenada con valores únicos, se puede usar un algoritmo de fusión, similar a la etapa de fusión en la ordenación por mezcla.

Ejemplo en 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], añadir solo una vez
            result = append(result, a[i])
            i++
            j++
        }
    }

    // Añadir los 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 recorre ambas listas, compara los elementos actuales y añade el menor al resultado. Si los elementos son iguales, añade uno y avanza ambos índices para evitar duplicados. Al final, se obtiene una lista ordenada con valores únicos.