二维数组去重


前言

我们需要一个元素唯一的二维数组,但是这个二维数组在处理前是有重复元素的,这个时候我们就要对其进行去重


[[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)

类似冒泡排序的做法,如果还有更多有趣又机智的方法欢迎评论探讨