32 lines
		
	
	
		
			651 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			651 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package sliceutil
 | |
| 
 | |
| import "sort"
 | |
| 
 | |
| // RemoveDuplicatesWithMap 使用 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
 | |
| }
 | |
| 
 | |
| // RemoveDuplicatesWithSort 先排序再去重
 | |
| 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
 | |
| }
 |