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
用golang如何替换某个文件中的字符串
Apr 25 Golang
goland 设置project gopath的操作
May 06 Golang
基于Golang 高并发问题的解决方案
May 08 Golang
Go语言基础切片的创建及初始化示例详解
Nov 17 Golang
Golang使用Panic与Recover进行错误捕获
Mar 22 Golang
Go归并排序算法的实现方法
Apr 06 Golang
Golang jwt身份认证
Apr 20 Golang
Golang bufio详细讲解
Apr 21 Golang
Go Grpc Gateway兼容HTTP协议文档自动生成网关
Jun 16 Golang
基于Python实现西西成语接龙小助手
Aug 05 Golang
go goth封装第三方认证库示例详解
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 伪静态隐藏传递参数名的四种方法
2010/02/22 PHP
关于php连接mssql:pdo odbc sql server
2011/07/20 PHP
PHP中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
PHP PDO fetch 模式各种参数的输出结果一览
2015/01/07 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
使用Json比用string返回数据更友好,也更面向对象一些
2011/09/13 Javascript
extjs render 用法介绍
2013/09/11 Javascript
Jquery ajaxStart()与ajaxStop()方法(实例讲解)
2013/12/18 Javascript
jQuery使用CSS()方法给指定元素同时设置多个样式
2015/03/26 Javascript
JavaScript中的substr()方法使用详解
2015/06/06 Javascript
Js+php实现异步拖拽上传文件
2015/06/23 Javascript
jQuery实现带滑动条的菜单效果代码
2015/08/26 Javascript
很实用的js选项卡切换效果
2016/08/12 Javascript
jquery实现下拉框左右选择功能
2017/02/21 Javascript
详解angular中通过$location获取路径(参数)的写法
2017/03/21 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
vue.js实现标签页切换效果
2018/06/07 Javascript
React事件处理的机制及原理
2018/12/03 Javascript
跟老齐学Python之有容乃大的list(2)
2014/09/15 Python
win10系统中安装scrapy-1.1
2016/07/03 Python
Python实现代码统计工具(终极篇)
2016/07/04 Python
Python中列表和元组的使用方法和区别详解
2020/12/30 Python
python实现换位加密算法的示例
2018/10/14 Python
理想高通滤波实现Python opencv示例
2019/01/30 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
2019/05/28 Python
Python 运行.py文件和交互式运行代码的区别详解
2019/07/02 Python
Python一行代码解决矩阵旋转的问题
2019/11/30 Python
Lululemon英国官网:加拿大瑜伽服装品牌
2019/01/14 全球购物
2014年标准化工作总结
2014/12/17 职场文书
2015年仓库工作总结
2015/04/09 职场文书
试用期解除劳动合同通知书
2015/04/16 职场文书
教师见习总结范文
2015/06/23 职场文书
婚宴父亲致辞
2015/07/27 职场文书
python基础入门之字典和集合
2021/06/13 Python
DSP接收机前端设想
2022/04/05 无线电