v3_1
This commit is contained in:
31
internal/pkg/sliceutil/sliceutil.go
Normal file
31
internal/pkg/sliceutil/sliceutil.go
Normal file
@@ -0,0 +1,31 @@
|
||||
package sliceutil
|
||||
|
||||
import "sort"
|
||||
|
||||
// 使用 map 去除重复元素
|
||||
func RemoveDuplicatesWithMap[T comparable](slice []T) []T {
|
||||
result := make([]T, 0, len(slice))
|
||||
seen := make(map[T]bool)
|
||||
for _, v := range slice {
|
||||
if _, ok := seen[v]; !ok {
|
||||
seen[v] = true
|
||||
result = append(result, v)
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
// 先排序再去重
|
||||
func RemoveDuplicatesWithSort(slice []int) []int {
|
||||
if len(slice) == 0 {
|
||||
return slice
|
||||
}
|
||||
sort.Ints(slice)
|
||||
result := []int{slice[0]}
|
||||
for i := 1; i < len(slice); i++ {
|
||||
if slice[i] != slice[i-1] {
|
||||
result = append(result, slice[i])
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
Reference in New Issue
Block a user