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语言求任意类型切片的长度操作
Apr 26 Golang
go 原生http web 服务跨域restful api的写法介绍
Apr 27 Golang
解决Golang time.Parse和time.Format的时区问题
Apr 29 Golang
Golang: 内建容器的用法
May 05 Golang
Golang的继承模拟实例
Jun 30 Golang
如何解决goland,idea全局搜索快捷键失效问题
Apr 03 Golang
Go语言的协程上下文的几个方法和用法
Apr 11 Golang
Golang获取List列表元素的四种方式
Apr 20 Golang
Golang map映射的用法
Apr 22 Golang
Go web入门Go pongo2模板引擎
May 20 Golang
基于Python实现西西成语接龙小助手
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基于curl实现随机ip地址抓取内容的方法
2016/10/11 PHP
JavaScript QueryString解析类代码
2010/01/17 Javascript
Jquery Ajax学习实例 向页面发出请求,返回XML格式数据
2010/03/14 Javascript
jQuery使用技巧简单汇总
2013/04/18 Javascript
js判断undefined变量类型使用typeof
2013/06/03 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
jquery.post用法之type设置问题
2014/02/24 Javascript
JS设置下拉列表框当前所选值的方法
2015/12/22 Javascript
JavaScript实现瀑布流以及加载效果
2017/02/11 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
浅谈webpack4.x 入门(一篇足矣)
2018/09/05 Javascript
Nodejs让异步变成同步的方法
2019/03/02 NodeJs
浅谈layui里的上传控件问题
2019/09/26 Javascript
vuex + keep-alive实现tab标签页面缓存功能
2019/10/17 Javascript
解决vue+ element ui 表单验证有值但验证失败问题
2020/01/16 Javascript
Python中文分词工具之结巴分词用法实例总结【经典案例】
2017/04/15 Python
Python实现冒泡排序的简单应用示例
2017/12/11 Python
python并发2之使用asyncio处理并发
2017/12/21 Python
python实现监控某个服务 服务崩溃即发送邮件报告
2018/06/21 Python
python处理两种分隔符的数据集方法
2018/12/12 Python
Python Cookie 读取和保存方法
2018/12/28 Python
Python中GeoJson和bokeh-1的使用讲解
2019/01/03 Python
详解python中的数据类型和控制流
2019/08/08 Python
Python实现链表反转的方法分析【迭代法与递归法】
2020/02/22 Python
css3的transition效果和transfor效果示例介绍
2013/10/30 HTML / CSS
英国赛车、汽车改装和摩托车零件购物网站:Demon Tweeks
2018/10/29 全球购物
Prototype如何为一个Ajax添加一个参数
2015/12/06 面试题
英文自荐信
2013/12/19 职场文书
一位农村小子的自荐信
2014/04/07 职场文书
纪念九一八事变演讲稿:牢记历史,捍卫主权
2014/09/14 职场文书
中学生运动会新闻稿
2014/09/24 职场文书
对照四风自我剖析材料
2014/10/07 职场文书
语文复习计划
2015/01/19 职场文书
2015年新农合工作总结
2015/03/30 职场文书
2015年教务主任工作总结
2015/07/22 职场文书
MySQL 数据库范式化设计理论
2022/04/22 MySQL