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 08 Golang
golang elasticsearch Client的使用详解
May 05 Golang
go语言基础 seek光标位置os包的使用
May 09 Golang
go xorm框架的使用
May 22 Golang
Golang生成Excel文档的方法步骤
Jun 09 Golang
golang中字符串MD5生成方式总结
Jul 04 Golang
golang连接MySQl使用sqlx库
Apr 14 Golang
golang定时器
Apr 14 Golang
实现GO语言对数组切片去重
Apr 20 Golang
详解Go语言中配置文件使用与日志配置
Jun 01 Golang
Python测试框架pytest核心库pluggy详解
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
奇怪的PHP引用效率问题分析
2012/03/23 PHP
php 对输入信息的进行安全过滤的函数代码
2012/06/29 PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
2014/06/19 PHP
php+mysql实现数据库随机重排实例
2014/10/17 PHP
php中随机函数mt_rand()与rand()性能对比分析
2014/12/01 PHP
Javascript hasOwnProperty 方法 &amp; in 关键字
2008/11/26 Javascript
JQuery在光标位置插入内容的实现代码
2010/06/18 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
JavaScript实现为input与textarea自定义hover,focus效果的方法
2015/08/21 Javascript
javascript实现uploadify上传格式以及个数限制
2015/11/23 Javascript
深入理解JS实现快速排序和去重
2016/10/17 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
详解AngularJS ng-class样式切换
2017/06/27 Javascript
vue 中swiper的使用教程
2018/05/22 Javascript
jQuery选择器之基本过滤选择器用法实例分析
2019/02/19 jQuery
生成无限制的微信小程序码的示例代码
2019/09/20 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
[01:04:30]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python使用迭代器打印螺旋矩阵的思路及代码示例
2016/07/02 Python
Python爬虫利用cookie实现模拟登陆实例详解
2017/01/12 Python
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
用Python将mysql数据导出成json的方法
2018/08/21 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
Django框架中间件(Middleware)用法实例分析
2019/05/24 Python
Django实现auth模块下的登录注册与注销功能
2019/10/10 Python
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
HTML5不支持frameset的两种解决方法
2016/11/14 HTML / CSS
HTML5 直播疯狂点赞动画实现代码 附源码
2020/04/14 HTML / CSS
三八节标语
2014/06/27 职场文书
骆驼祥子读书笔记
2015/06/26 职场文书
毕业生自我鉴定范文
2019/05/13 职场文书
MySQL索引篇之千万级数据实战测试
2021/04/05 MySQL
Golang ort 中的sortInts 方法
2022/04/24 Golang
python使用BeautifulSoup 解析HTML
2022/04/24 Python