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判断key是否在map中的代码
Apr 24 Golang
Golang: 内建容器的用法
May 05 Golang
再次探讨go实现无限 buffer 的 channel方法
Jun 13 Golang
Go 语言结构实例分析
Jul 04 Golang
Go语言并发编程 sync.Once
Oct 16 Golang
深入理解go缓存库freecache的使用
Feb 15 Golang
Go语言的协程上下文的几个方法和用法
Apr 11 Golang
Golang 实现 WebSockets 之创建 WebSockets
Apr 24 Golang
Golang并发工具Singleflight
May 06 Golang
Golang gRPC HTTP协议转换示例
Jun 16 Golang
Go语言编译原理之变量捕获
Aug 05 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
攻克CakePHP系列三 表单数据增删改
2008/10/22 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
2015/02/10 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
php用xpath解析html的代码实例讲解
2019/02/14 PHP
jQuery 技巧大全(新手入门篇)
2009/05/12 Javascript
jQuery使用append在html元素后同时添加多项内容的方法
2015/03/26 Javascript
Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)
2016/09/09 Javascript
微信小程序 页面跳转传参详解
2016/10/28 Javascript
JS公共小方法之判断对象是否为domElement的实例
2016/11/25 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
JS实现数组按升序及降序排列的方法
2017/04/26 Javascript
nodejs multer实现文件上传与下载
2017/05/10 NodeJs
JavaScript之filter_动力节点Java学院整理
2017/06/28 Javascript
基于js 本地存储(详解)
2017/08/16 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
Vue配合iView实现省市二级联动的示例代码
2018/07/27 Javascript
小程序中英文混合排序问题解决
2019/08/02 Javascript
Vue 样式切换及三元判断样式关联操作
2020/08/09 Javascript
[52:00]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs Optic
2018/04/02 DOTA
python链接Oracle数据库的方法
2015/06/28 Python
python对日志进行处理的实例代码
2018/10/06 Python
Python实现的统计文章单词次数功能示例
2019/07/08 Python
windows上安装python3教程以及环境变量配置详解
2019/07/18 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
2020/11/18 Python
Canvas 文本转粒子效果的实现代码
2019/02/14 HTML / CSS
美国折扣宠物药房:Total Pet Supply
2018/05/27 全球购物
芬兰设计商店美国:Finnish Design Shop US
2019/03/25 全球购物
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
请说出几个常用的异常类
2013/01/08 面试题
会议邀请函范文
2014/01/09 职场文书
建筑工地标语
2014/06/18 职场文书
2014中学教师节广播稿
2014/09/10 职场文书
幼儿园园长个人总结
2015/03/02 职场文书
英语教师求职信范文
2015/03/20 职场文书
django上传文件的三种方式
2021/04/29 Python