How to flatten a 2D array into a sorted one-dimensional array with unique values in Go

1 Answer

0 votes
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

*/

 



answered 3 hours ago by avibootz

Related questions

...