golang使用map实现去除重复数组


Posted in Golang onApril 14, 2022

golang数组去重利用map

可以利用go中,map数据类型的key唯一的属性,来对数组去重

将strSlice数组中重复的元素去掉,使其中的元素唯一

var strMap make(map[string]string)
strSlice := []string {"slice","int","string","int","boolean","string"}
for _,v:= range strSlice{
    strMap[value] = v
}
//strMap为:{"slice":"slice","int":"int","string":"string","boolean":boolean"}
//如果想将map转换为slice,可利用数组的append函数
var secondStr []string
for _,value := range strMap{
    secondStr = append(secondStr ,value)
}
//secondStr为:{"slice","int","string","boolean"}

golang删除排序数组中的重复项

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

给定数组 nums = [1,1,2], 

函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 

你不需要考虑数组中超出新长度后面的元素。

给定 nums = [0,0,1,1,1,2,2,3,3,4],

函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。

你不需要考虑数组中超出新长度后面的元素。

首先理解题意:

  • 当给定数组为空的时候就应该返回0
  • 而且不能引入其他数组空间,那就是不能再使用一个新的数组来存放结果
  • 还要不重复,数组中超出新长度后面的元素无视

那我们就可以用快慢指针的思想来解答这道题了

  • 给定两个游标left和right
  • 当给定数组的下标为left和right的值一样的话,就不管
  • 当不一样的话,那我们就要做一个操作,就是把当前right下标的值给到left下一个下标

具体代码:

func removeDuplicates(nums []int) int {
    //如果是空切片,那就返回0
    if len(nums) == 0 {
        return 0
    }
    //用两个标记来比较相邻位置的值
    //当一样的话,那就不管继续
    //当不一样的时候,就把right指向的值赋值给left下一位
    left, right := 0, 1
    for ; right < len(nums); right++ {
        if nums[left] == nums[right] {
            continue
        }
        left++
        nums[left] = nums[right]
    }
    fmt.Println(nums[:left+1])
    return left + 1
}
Golang 相关文章推荐
goland 清除所有的默认设置操作
Apr 28 Golang
golang 实现对Map进行键值自定义排序
Apr 28 Golang
彻底理解golang中什么是nil
Apr 29 Golang
解决Golang time.Parse和time.Format的时区问题
Apr 29 Golang
golang 比较浮点数的大小方式
May 02 Golang
golang协程池模拟实现群发邮件功能
May 02 Golang
Golang二维数组的使用方式
May 28 Golang
Golang生成Excel文档的方法步骤
Jun 09 Golang
go语言使用Casbin实现角色的权限控制
Jun 26 Golang
go使用Gin框架利用阿里云实现短信验证码功能
Aug 04 Golang
Golang 并发下的问题定位及解决方案
Mar 16 Golang
如何解决goland,idea全局搜索快捷键失效问题
Apr 03 Golang
golang生成并解析JSON
Apr 14 #Golang
Go语言 详解net的tcp服务
Apr 14 #Golang
golang连接MySQl使用sqlx库
Apr 14 #Golang
Go语言安装并操作redis的go-redis库
Apr 14 #Golang
golang操作redis的客户端包有多个比如redigo、go-redis
Apr 14 #Golang
Go语言grpc和protobuf
Golang流模式之grpc的四种数据流
Apr 13 #Golang
You might like
PHP5中使用DOM控制XML实现代码
2010/05/07 PHP
PHP判断数据库中的记录是否存在的方法
2014/11/14 PHP
php实现插入排序
2015/03/29 PHP
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
2007/04/21 Javascript
半角全角相互转换的js函数
2009/10/16 Javascript
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
jQuery 方法大全方便学习参考
2010/02/25 Javascript
再论Javascript下字符串连接的性能
2011/03/05 Javascript
javascript 构造函数强制调用经验总结
2012/12/02 Javascript
Javascript获取HTML静态页面参数传递值示例
2013/08/18 Javascript
js charAt的使用示例
2014/02/18 Javascript
jQuery带箭头提示框tooltips插件集锦
2014/11/17 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
JavaScript中定义函数的三种方法
2015/03/12 Javascript
JavaScript使表单中的内容显示在屏幕上的方法
2015/06/29 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
Angular懒加载机制刷新后无法回退的快速解决方法
2016/08/30 Javascript
jquery判断类型是不是number类型的实例代码
2016/10/07 Javascript
CSS3 动画卡顿性能优化的完美解决方案
2018/09/20 Javascript
element-ui组件中input等的change事件中传递自定义参数
2019/05/22 Javascript
JavaScript如何处理移动端拍摄图片旋转问题
2019/11/16 Javascript
[57:12]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第一场 10.31
2020/11/02 DOTA
Python运用于数据分析的简单教程
2015/03/27 Python
Python中datetime模块参考手册
2017/01/13 Python
Python定时发送消息的脚本:每天跟你女朋友说晚安
2018/10/21 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
2021/01/29 Python
成人大专生实习期的自我评价
2013/10/02 职场文书
2013年保送生自荐信格式
2013/11/20 职场文书
自我评价正确写法范文
2013/12/10 职场文书
遗产继承公证书
2014/04/09 职场文书
普通党员对照检查材料
2014/08/28 职场文书
自荐信格式模板
2015/03/27 职场文书
酒店工程部经理岗位职责
2015/04/09 职场文书
表扬信格式模板
2015/05/05 职场文书
详解python字符串驻留技术
2021/05/21 Python