How to create a common sorted unique slice from 3 integer slices in Go

1 Answer

0 votes
package main

import (
    "fmt"
    "sort"
)

/*
   Function: mergeSlices
   Purpose:  Combine three integer slices into a single slice.
*/
func mergeSlices(slcA, slcB, slcC []int) []int {
    lstMerged := []int{}
    lstMerged = append(lstMerged, slcA...)
    lstMerged = append(lstMerged, slcB...)
    lstMerged = append(lstMerged, slcC...)
    
    return lstMerged
}

/*
   Function: uniqueSorted
   Purpose:  Convert a slice into a sorted slice with unique elements.
             Uses a map to remove duplicates, then sorts the result.
*/
func uniqueSorted(lst []int) []int {
    seen := make(map[int]bool)
    slcUnique := []int{}

    for _, v := range lst {
        if !seen[v] {
            seen[v] = true
            slcUnique = append(slcUnique, v)
        }
    }

    sort.Ints(slcUnique)
    
    return slcUnique
}

func main() {

    // Input slices
    slc1 := []int{5, 1, 14, 3, 8, 9, 1, 1, 7}
    slc2 := []int{3, 5, 7, 2, 3}
    slc3 := []int{2, 9, 8}

    // Step 1: Merge all slices
    lstMerged := mergeSlices(slc1, slc2, slc3)

    // Step 2: Create sorted unique slice
    lstResult := uniqueSorted(lstMerged)

    // Step 3: Print result
    fmt.Print("Sorted unique slice: ")
    for _, x := range lstResult {
        fmt.Print(x, " ")
    }
}


/*
run:

Sorted unique slice: 1 2 3 5 7 8 9 14 

*/

 



answered 6 days ago by avibootz

Related questions

...