Sobes.tech
Middle

Task: merge two sorted slices with unique values into one sorted slice with unique values

sobes.tech AI

Answer from AI

To merge two sorted slices with unique values into one sorted slice with unique values, you can use a merging algorithm similar to the merge step in merge sort.

Example in 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], add once
            result = append(result, a[i])
            i++
            j++
        }
    }

    // Add remaining elements
    for i < len(a) {
        result = append(result, a[i])
        i++
    }
    for j < len(b) {
        result = append(result, b[j])
        j++
    }

    return result
}

This code iterates through both slices, compares current elements, and adds the smaller one to the result. If elements are equal, it adds one and advances both indices to avoid duplicates. The result is a sorted slice with unique values.