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 相关文章推荐
golang中实现给gif、png、jpeg图片添加文字水印
Apr 26 Golang
Go语言中的UTF-8实现
Apr 26 Golang
Golang 实现超大文件读取的两种方法
Apr 27 Golang
彻底理解golang中什么是nil
Apr 29 Golang
golang 接口嵌套实现复用的操作
Apr 29 Golang
golang日志包logger的用法详解
May 05 Golang
Goland使用Go Modules创建/管理项目的操作
May 06 Golang
golang 语言中错误处理机制
Aug 30 Golang
Go 中的空白标识符下划线
Mar 25 Golang
golang为什么要统一错误处理
Apr 03 Golang
Golang map映射的用法
Apr 22 Golang
深入理解 Golang 的字符串
May 04 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
PHP 多维数组的排序问题 根据二维数组中某个项排序
2011/11/09 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
Yii框架实现多数据库配置和操作的方法
2017/05/25 PHP
php实现的中秋博饼游戏之绘制骰子图案功能示例
2017/11/06 PHP
一直复略了的一个问题,关于表单重复提交
2007/02/15 Javascript
JavaScript关闭当前页面(窗口)不带任何提示
2014/03/26 Javascript
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
jquery拖拽效果完整实例(附demo源码下载)
2016/01/14 Javascript
Node.js文件操作方法汇总
2016/03/22 Javascript
jQuery基于扩展简单实现倒计时功能的方法
2016/05/14 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
2016/06/21 Javascript
Node.js配合node-http-proxy解决本地开发ajax跨域问题
2016/08/31 Javascript
jquery获取select,option所有的value和text的实例
2017/03/06 Javascript
深入理解Webpack 中路径的配置
2017/06/17 Javascript
详谈表单格式化插件jquery.serializeJSON
2017/06/23 jQuery
JS动态修改网页body的背景色实例代码
2017/10/07 Javascript
[03:10]超级美酒第四天 fy拉比克秀 大合集
2018/06/05 DOTA
Python标准库之多进程(multiprocessing包)介绍
2014/11/25 Python
解决Python print输出不换行没空格的问题
2018/11/14 Python
python的常见矩阵运算(小结)
2019/08/07 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
2019/12/04 Python
np.dot()函数的用法详解
2020/01/17 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
python 自定义异常和主动抛出异常(raise)的操作
2020/12/11 Python
html5 svg 中元素点击事件添加方法
2013/01/16 HTML / CSS
Asics日本官网:鬼冢八喜郎创立的跑鞋运动品牌
2017/10/18 全球购物
Canal官网:巴西女性时尚品牌
2019/10/16 全球购物
运动会入场词50字
2014/02/20 职场文书
政治思想表现评语
2014/05/04 职场文书
优秀学生干部个人事迹材料
2014/06/02 职场文书
社区党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
全国法院系统开展党的群众路线教育实践活动综述(全文)
2014/10/25 职场文书
2014年德育工作总结
2014/11/20 职场文书
西柏坡导游词
2015/02/05 职场文书
大学生个人总结范文
2015/02/15 职场文书
python人工智能human learn绘图可创建机器学习模型
2021/11/23 Python