Go--二維數組去重

二維數組去重

前言

我們需要一個元素唯一的二維數組,但是這個二維數組在處理前是有重複元素的,這個時候我們就要對其進行去重

[[1,2,3],[1,2,2,],[1,2,3]] //其中[1,2,3]出現了兩次 需要對這個二維數組進行去重
去重…
處理成: [[1,2,3],[1,2,2]]

Code

package main

import (
	"fmt"
	"reflect"
)

func killRepetion(nums [][]int) [][]int  {
	newRes := make([][]int, 0)
    for i := 0; i < len(nums); i++ {
        flag := false
        for j := i + 1; j < len(nums); j++ {
           if reflect.DeepEqual(nums[i], nums[j]){
                flag = true
                break
            }
        }
        if !flag {
            newRes = append(newRes, nums[i])
        }
    }
	return newRes
}

func main()  {
	result := [][]int{{1,2,3},{1,2,3},{1,2,3},{1,2,2}}
	killDoble := killRepetion(result)
	fmt.Println(killDoble)
}

其中reflect函數中的 reflect.DeepEqual(a[], b[])可以比較a數組和b數組是否相同
ps: 在golang中使用reflect通常需要付出性能代價
所以瞭解這個方法就可以把二維數組去重看成一維數組去重
時間複雜度爲 O(n*n)
類似冒泡排序的做法,如果還有更多有趣又機智的方法歡迎評論探討

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章