Go切片去掉重复元素
1.Go切片去掉重复元素
如果传入的是string类型:
- //slice去重
- func removeRepByMap(slc []string) []string {
- result := []string{} //存放返回的不重复切片
- tempMap := map[string]byte{} // 存放不重复主键
- for _, e := range slc {
- l := len(tempMap)
- tempMap[e] = 0 //当e存在于tempMap中时,再次添加是添加不进去的,,因为key不允许重复
- //如果上一行添加成功,那么长度发生变化且此时元素一定不重复
- if len(tempMap) != l { // 加入map后,map长度变化,则元素不重复
- result = append(result, e) //当元素不重复时,将元素添加到切片result中
- }
- }
- return result
- }
如果传入的是int类型:
- //slice去重
- func removeRepByMap(slc []int) []int {
- result := []int{} //存放返回的不重复切片
- tempMap := map[int]byte{} // 存放不重复主键
- for _, e := range slc {
- l := len(tempMap)
- tempMap[e] = 0 //当e存在于tempMap中时,再次添加是添加不进去的,,因为key不允许重复
- //如果上一行添加成功,那么长度发生变化且此时元素一定不重复
- if len(tempMap) != l { // 加入map后,map长度变化,则元素不重复
- result = append(result, e) //当元素不重复时,将元素添加到切片result中
- }
- }
- return result
- }
当然如果传入的是其它类型,把对应类型改掉即可
Go切片去掉重复元素的更多相关文章
- list去掉重复元素
需求: 有list 里面含有重复元素,要求去掉重复元素: solution 1: >>> a [1, 2, 2, 1, 3, 4, 5, 6, 5] >>> set ...
- JS数组去掉重复元素
JS数组去掉重复元素,这里提供3中写法. var arr =[1,2,3,4,5,6,3,4,7,2,4,1,8]; 输出:[1,2,3,4,5,6,7,8]; 1.使用indexOf() arr.i ...
- python 去掉重复元素 学到再添加
1. python 内置函数 set(可迭代对象) 返回无重复元素的集合.如在分类中,classification为类别数组 set(classification)为类别数 2.numpy np.un ...
- JS - 给数组的原型添加去掉重复元素的distinct方法
/* 调用完该方法,原数组只留下非重复的数据 返回一个数组,里面是依次出现的重复元素 */Array.prototype.distinct = function () { var removeA ...
- python list 去掉重复元素
貌似用遍历最方便. http://www.cnblogs.com/tudas/p/python-delete-duplicate-element-from-list.html
- 去掉Arraylist集合中的重复元素
package cn.collection; import java.util.ArrayList; import java.util.Iterator; import java.util.Scann ...
- java代码实现将集合中的重复元素去掉
package com.loaderman.test; import java.util.ArrayList; import java.util.LinkedHashSet; import java. ...
- 去掉有序数组中的重复元素 c/c++
去掉有序数组中的重复元素: int RemoveDuplates(int A[], int nCnt) { ; ; , j = ; i < nCnt && j < nCnt ...
- C# 去掉List重复元素的方法
因为用到list,要去除重复数据,尝试了几种方法.记录于此... 测试数据: List<string> li1 = new List<string> { "8&quo ...
随机推荐
- PHP学习—了解篇2
使用PHP 表单 表单处理: PHP超全局变量:$_GET 和 $ _POST 用于处理表单数据(form-data) < form > 表单标签 action属性:规定表单数据提交U ...
- presentViewController底部弹框适配ipad
//适配ipad if ([alert respondsToSelector:@selector(popoverPresentationController)]) { alert.popoverPre ...
- react-native 键盘遮挡输入框
Android上已经自动对键盘遮挡输入框做了处理,所以我们只需要关注ios. 1.首先引入 KeyboardAvoidingView import { KeyboardAvoidingView } f ...
- Hive表的几种存储格式
Hive的文件存储格式: textFile textFile为默认格式 存储方式:行存储 缺点:磁盘开销大:数据解析开销大:压缩的text文件,hive无法进行合并和拆分 sequencefile 二 ...
- 001 C/C++ 选择排序法
简单选择排序: 选择排序法 是对 定位比较交换法(也就是冒泡排序法) 的一种改进. 选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录 ...
- 机器学习--用PCA算法实现三维样本降到二维
对于维数比较多的数据,首先需要做的事就是在尽量保证数据本质的前提下将数据中的维数降低.降维是一种数据集预处理技术,往往在数据应用在其他算法之前使用,它可以去除掉数据的一些冗余信息和噪声,使数据变得更加 ...
- cmd如何跨盘cd切换路径
cmd跨盘cd要加参数 /d ,难怪,我还以为电脑有问题呢~
- 大数据量数据库设计与优化方案(SQL优化)
转自:http://blog.sina.com.cn/s/blog_6c0541d50102wxen.html 一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的 ...
- AcWing 801. 二进制中1的个数
网址 https://www.acwing.com/solution/AcWing/content/2066/ 题目描述给定一个长度为n的数列,请你求出数列中每个数的二进制表示中1的个数. 算法1主要 ...
- CentOS下yum方式安装FFmpeg
FFmpeg一个完整的跨平台解决方案,用于记录,转换和流式传输音频和视频. 文档:https://www.ffmpeg.org/documentation.html FFmpeg安装 1.安装Nux ...