前言
我們需要一個元素唯一的二維數組,但是這個二維數組在處理前是有重複元素的,這個時候我們就要對其進行去重
[[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)
類似冒泡排序的做法,如果還有更多有趣又機智的方法歡迎評論探討