package main
import (
"fmt"
"sort"
)
// Function that flattens a 2D array, sorts it, removes duplicates,
// and returns a new sorted slice with unique values
func flattenSortUnique(array2d [][]int) []int {
// 1. Flatten the 2D array into a 1D slice
flat := make([]int, 0)
for _, row := range array2d {
flat = append(flat, row...)
}
// 2. Sort the flattened slice
sort.Ints(flat)
// 3. Remove duplicates
unique := make([]int, 0, len(flat))
for i, v := range flat {
if i == 0 || v != flat[i-1] {
unique = append(unique, v)
}
}
return unique
}
func main() {
// Input array
array2d := [][]int{
{4, 3, 3, 2, 4},
{30, 10, 10},
{10, 30},
{1, 1, 6, 7, 7, 7, 8},
}
arr := flattenSortUnique(array2d)
// Print results
for _, n := range arr {
fmt.Printf("%d\t", n)
}
}
/*
run
1 2 3 4 6 7 8 10 30
*/