golang -- slice元素去重
来源:互联网 发布:查看占用80端口的进程 编辑:程序博客网 时间:2024/06/06 16:36
合并两个整型切片,返回没有重复元素的切片,有两种去重策略
1. 通过双重循环来过滤重复元素(时间换空间)
// 通过两重循环过滤重复元素func RemoveRepByLoop(slc []int) []int { result := []int{} // 存放结果 for i := range slc{ flag := true for j := range result{ if slc[i] == result[j] { flag = false // 存在重复元素,标识为false break } } if flag { // 标识为false,不添加进结果 result = append(result, slc[i]) } } return result}
2. 通过字典来过滤(空间换时间)
因为字典的主键唯一,所以可以用来判断元素是否重复
// 通过map主键唯一的特性过滤重复元素func RemoveRepByMap(slc []int) []int { result := []int{} tempMap := map[int]byte{} // 存放不重复主键 for _, e := range slc{ l := len(tempMap) tempMap[e] = 0 if len(tempMap) != l{ // 加入map后,map长度变化,则元素不重复 result = append(result, e) } } return result}
ps : 这里为了节省内存,使用map[int]byte。 因为map的value并没有用到,所以什么类型都可以。
效率第一,如果节省计算时间,则可以采用如下方式
// 元素去重func RemoveRep(slc []int) []int{ if len(slc) < 1024 { // 切片长度小于1024的时候,循环来过滤 return RemoveRepByLoop(slc) }else{ // 大于的时候,通过map来过滤 return RemoveRepByMap(slc) }}
ps: 1024 这个数字不是特别精准,我是使用go test 的基准测试,手工的比较的。大约在这个数量超上,使用map方式的速度要快,小于这个数量级后,loop方式要快,而且省内存。
阅读全文
0 0
- golang -- slice元素去重
- Go语言Slice去重
- golang 数组去重
- golang数组去重 去空
- Golang-slice
- golang slice
- NSArray元素去重
- 数组元素去重
- NSArray元素去重
- 元素去重
- 数组元素去重
- Golang去除slice和list的重复元素
- golang实现通过索引删除任意类型的slice元素
- JS数组元素去重
- js数组元素去重
- vecor元素排序去重
- python列表元素去重
- matlab 数组元素去重
- 给单元素艺术添加动画
- 大数据平台搭建-简单说
- Functional GPU Algorithm
- Android NDK 开发:实战案例
- Linux IO多路复用之epoll网络编程(含源码)
- golang -- slice元素去重
- Github遇到Permanently added the RSA host key for IP address '192.30.252.128' to the list of known host
- Python3 执行Linux Bash命令
- 数据库(第一范式,第二范式,第三范式)
- Rightware的Kanzi界面很快你的全液晶汽车仪表盘
- Python的序列(2)-元组
- CommonsMultipartFile 文件上传
- HDU 6126 Give out candies (贼巧妙的最小割)
- PAT1060——Are They Equal,利用字符串解题