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 相关文章推荐
win10下go mod配置方式
Apr 25 Golang
golang正则之命名分组方式
Apr 25 Golang
golang中的空slice案例
Apr 27 Golang
go 原生http web 服务跨域restful api的写法介绍
Apr 27 Golang
golang 在windows中设置环境变量的操作
Apr 29 Golang
golang DNS服务器的简单实现操作
Apr 30 Golang
golang 比较浮点数的大小方式
May 02 Golang
Go 自定义package包设置与导入操作
May 06 Golang
go xorm框架的使用
May 22 Golang
Go timer如何调度
Jun 09 Golang
Go语言设计模式之结构型模式
Jun 22 Golang
Go语言安装并操作redis的go-redis库
Apr 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/07/12 PHP
php文件系统处理方法小结
2016/05/23 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
2016/09/11 PHP
laravel5.2实现区分前后台用户登录的方法
2017/01/11 PHP
再论Javascript的类继承
2011/03/05 Javascript
javascript中键盘事件用法实例分析
2015/01/30 Javascript
jQuery实现表格行上移下移和置顶的方法
2015/05/22 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
2015/06/26 Javascript
JAVA Web实时消息后台服务器推送技术---GoEasy
2016/11/04 Javascript
浅谈js算法和流程控制
2016/12/29 Javascript
详解nodejs微信公众号开发——1.接入微信公众号
2017/04/10 NodeJs
nodejs处理图片的中间件node-images详解
2017/05/08 NodeJs
Vue中引入样式文件的方法
2017/08/18 Javascript
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
vue项目中公用footer组件底部位置的适配问题
2018/05/10 Javascript
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
深入理解Promise.all
2018/08/08 Javascript
vue-awesome-swiper 基于vue实现h5滑动翻页效果【推荐】
2018/11/08 Javascript
javascriptvoid(0)含义以及与&quot;#&quot;的区别讲解
2019/01/19 Javascript
vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show
2019/04/12 Javascript
Vue 实现前进刷新后退不刷新的效果
2019/06/14 Javascript
Net微信网页开发 使用微信JS-SDK获取当前地理位置过程详解
2019/08/26 Javascript
详解Node.js使用token进行认证的简单示例
2020/05/25 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
2020/09/24 Javascript
JavaScript对象访问器Getter及Setter原理解析
2020/12/08 Javascript
python实现哈希表
2014/02/07 Python
PatPat德国:妈妈的每日优惠
2019/10/02 全球购物
杭州-DOTNET笔试题集
2013/09/25 面试题
渔夫的故事教学反思
2014/02/14 职场文书
求职简历自我评价范例
2014/03/12 职场文书
保险公司晨会主持词
2014/03/22 职场文书
工地宣传标语
2014/06/18 职场文书
校庆口号
2014/06/20 职场文书
2014三年级班主任工作总结
2014/12/05 职场文书
小升初自荐信范文
2015/03/05 职场文书
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android