golang 去重算法
func Unique(arr []int) []int {
var arr_len int = len(arr) - 1
for ; arr_len > 0; arr_len-- {
// 拿最后项与前面的各项逐个(自后向前)进行比较
for j := arr_len - 1; j >= 0; j-- {
if arr[arr_len] == arr[j] {
arr = append(arr[:arr_len], arr[arr_len+1:]...)
break
}
}
/*
// 或拿最后项与前面的各项逐个(自前向后)进行比较
for j := 0; j < arr_len; j++ {
if arr[arr_len] == arr[j] {
// fmt.Printf("arr_len=%d equals j=%d\n ", arr[arr_len], arr[j])
// 如果存在重复项,则将重复项删除,并重新给数组赋值
arr = append(arr[:arr_len], arr[arr_len + 1:]...)
break
}
}
*/
}
return arr
}
//这个利用map的去重算法会乱序
func UniqueAddress(addresslist []string) []string {
m := make(map[string]string)
for _, s := range addresslist {
m[s] = s
}
var ret []string
for _, v := range m {
ret = append(ret, v)
}
return ret
}