コード
配列のまま要素ごとに重複を探索すると計算量が増えるので一旦mapにする。
mapは重複したキーの存在ができないので、再度配列に変換すると重複が取り除かれた状態で取得できる。
func distinct(arr []int) []int {
m := make(map[int]struct{})
for _, v := range arr {
m[v] = struct{}{}
}
var newArr []int
for k, _ := range m {
newArr = append(newArr, k)
}
return newArr
}
使い方
func main() {
fmt.Println(distinct([]int{1, 2, 3, 1})) // => [1 2 3]
}