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 正则匹配效率详解
Apr 25 Golang
golang 实现菜单树的生成方式
Apr 28 Golang
golang gopm get -g -v 无法获取第三方库的解决方案
May 05 Golang
go web 预防跨站脚本的实现方式
Jun 11 Golang
golang 实用库gotable的具体使用
Jul 01 Golang
Go中的条件语句Switch示例详解
Aug 23 Golang
详解Golang如何优雅的终止一个服务
Mar 21 Golang
victoriaMetrics库布隆过滤器初始化及使用详解
Apr 05 Golang
golang的文件创建及读写操作
Apr 14 Golang
实现GO语言对数组切片去重
Apr 20 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的博客ping服务代码
2012/02/04 PHP
smarty巧妙处理iframe中内容页的代码
2012/03/07 PHP
mcrypt启用 加密以及解密过程详细解析
2013/08/07 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
基于php的微信公众平台开发入门实例
2015/04/15 PHP
分享五个PHP7性能优化提升技巧
2015/12/07 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
2019/08/05 PHP
使用SyntaxHighlighter实现HTML高亮显示代码的方法
2010/02/04 Javascript
javascript 子窗体父窗体相互传值方法
2010/05/31 Javascript
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
JavaScript实现换肤功能
2017/09/15 Javascript
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
React路由管理之React Router总结
2018/05/10 Javascript
JavaScript中click和onclick本质区别与用法分析
2018/06/07 Javascript
Vue如何实现响应式系统
2018/07/11 Javascript
Vue配合iView实现省市二级联动的示例代码
2018/07/27 Javascript
JS实现的简单分页功能示例
2018/08/23 Javascript
微信小程序按钮点击跳转页面详解
2019/05/06 Javascript
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
2019/09/19 Javascript
原生JS实现贪吃蛇小游戏
2020/03/09 Javascript
js将日期格式转换为YYYY-MM-DD HH:MM:SS
2020/09/18 Javascript
[09:31]2016国际邀请赛中国区预选赛Yao赛后采访 答题送礼
2016/06/27 DOTA
pycharm 使用心得(二)设置字体大小
2014/06/05 Python
详解duck typing鸭子类型程序设计与Python的实现示例
2016/06/03 Python
对python append 与浅拷贝的实例讲解
2018/05/04 Python
python Django框架实现web端分页呈现数据
2019/10/31 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
2020/12/17 Python
StubHub墨西哥:购买和出售您的门票
2016/09/17 全球购物
Europcar比利时:租车
2019/08/26 全球购物
俞敏洪北大演讲稿
2014/05/22 职场文书
签约仪式策划方案
2014/06/02 职场文书
责任书格式范文
2014/07/28 职场文书
乡镇组织委员个人整改措施
2014/09/16 职场文书
《棉鞋里的阳光》教学反思
2016/02/20 职场文书
浅谈Redis的事件驱动模型
2022/05/30 Redis