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 相关文章推荐
基于go interface{}==nil 的几种坑及原理分析
Apr 24 Golang
Go语言带缓冲的通道实现
Apr 26 Golang
golang 接口嵌套实现复用的操作
Apr 29 Golang
golang 实现Location跳转方式
May 02 Golang
Go 语言结构实例分析
Jul 04 Golang
修改并编译golang源码的操作步骤
Jul 25 Golang
golang操作rocketmq的示例代码
Apr 06 Golang
Golang 1.18 多模块Multi-Module工作区模式的新特性
Apr 11 Golang
golang生成并解析JSON
Apr 14 Golang
Go gorilla/sessions库安装使用
Aug 14 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
2006/12/14 PHP
php桌面中心(二) 数据库写入
2007/03/11 PHP
php存储过程调用实例代码
2013/02/03 PHP
php+ajax实现图片文件上传功能实例
2014/06/17 PHP
jQuery lazyLoad图片延迟加载插件的优化改造方法分享
2013/08/13 Javascript
jquery获取URL中参数解决中文乱码问题的两种方法
2013/12/18 Javascript
js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
2016/01/27 Javascript
jQuery计算文本框字数及限制文本框字数的方法
2016/03/01 Javascript
JS验证输入的是否是数字及保留几位小数问题
2018/05/09 Javascript
vuex进阶知识点巩固
2018/05/20 Javascript
深入理解nodejs搭建静态服务器(实现命令行)
2019/02/05 NodeJs
零基础之Node.js搭建API服务器的详解
2019/03/08 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
2020/06/11 Javascript
[00:35]DOTA2上海特级锦标赛 Newbee战队宣传片
2016/03/03 DOTA
[50:02]完美世界DOTA2联赛PWL S2 Magma vs FTD 第三场 11.29
2020/12/03 DOTA
使用python实现baidu hi自动登录的代码
2013/02/10 Python
Python语法快速入门指南
2015/10/12 Python
Python深入06——python的内存管理详解
2016/12/07 Python
利用python求相邻数的方法示例
2017/08/18 Python
python+opencv识别图片中的圆形
2020/03/25 Python
网红编程语言Python将纳入高考你怎么看?
2018/06/07 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
2018/07/30 Python
Python 从列表中取值和取索引的方法
2018/12/25 Python
如何利用Anaconda配置简单的Python环境
2019/06/24 Python
Selenium常见异常解析及解决方案示范
2020/04/10 Python
深入了解Python enumerate和zip
2020/07/16 Python
CSS3 选择器 伪类选择器介绍
2012/01/21 HTML / CSS
匈牙利最大的健身制造商和销售商:inSPORTline
2018/10/30 全球购物
MYSQL基础面试题
2012/05/13 面试题
工程概预算专业毕业生求职信
2013/10/04 职场文书
新领导上任欢迎词
2014/01/13 职场文书
秸秆管理实施方案
2014/03/15 职场文书
求职意向书范文
2014/04/01 职场文书
董事长助理工作总结2015
2015/07/23 职场文书
2016年教师节感言
2015/12/09 职场文书
2016年最美孝心少年事迹材料
2016/02/26 职场文书