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中切片copy复制和等号复制的区别介绍
Apr 27 Golang
Go使用协程交替打印字符
Apr 29 Golang
golang elasticsearch Client的使用详解
May 05 Golang
go设置多个GOPATH的方式
May 05 Golang
聊聊golang中多个defer的执行顺序
May 08 Golang
Go语言实现Base64、Base58编码与解码
Jul 26 Golang
深入理解go缓存库freecache的使用
Feb 15 Golang
如何利用golang运用mysql数据库
Mar 13 Golang
victoriaMetrics库布隆过滤器初始化及使用详解
Apr 05 Golang
GO语言异常处理分析 err接口及defer延迟
Apr 14 Golang
详解Go语言中Get/Post请求测试
Jun 01 Golang
Go gRPC进阶教程gRPC转换HTTP
Jun 16 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防止表单重复提交的几种常用方法汇总
2014/08/19 PHP
PHP实现根据图片色界在不同位置加水印的方法
2015/08/08 PHP
php连接oracle数据库的核心步骤
2016/05/26 PHP
PHP实现bitmap位图排序与求交集的方法
2016/07/28 PHP
静态html文件执行php语句的方法(推荐)
2016/11/21 PHP
Jquery从头学起第四讲 jquery入门教程
2010/08/01 Javascript
JSChart轻量级图形报表工具(内置函数中文参考)
2010/10/11 Javascript
分享20个提升网站界面体验的jQuery插件
2014/12/15 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
node.js+express制作网页计算器
2016/01/17 Javascript
使用jquery提交form表单并自定义action的方法
2016/05/25 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
2016/08/05 Javascript
JS触摸与手势事件详解
2017/05/09 Javascript
JavaScript输入框字数实时统计更新
2017/06/17 Javascript
Angularjs实现上传图片预览功能
2017/09/01 Javascript
[56:47]Ti4 循环赛第三日 iG vs Liquid
2014/07/12 DOTA
[05:09]第二届DOTA2亚洲邀请赛决赛日比赛集锦:iG 3:0 OG夺冠
2017/04/05 DOTA
python判断字符串是否纯数字的方法
2014/11/19 Python
解读! Python在人工智能中的作用
2017/11/14 Python
对python中数组的del,remove,pop区别详解
2018/11/07 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
Python随机数函数代码实例解析
2020/02/09 Python
python数据预处理 :数据抽样解析
2020/02/24 Python
python自动提取文本中的时间(包含中文日期)
2020/08/31 Python
详解HTML5 window.postMessage与跨域
2017/05/11 HTML / CSS
Superdry极度干燥美国官网:英国制造的服装品牌
2018/11/13 全球购物
招商业务员岗位职责
2013/12/16 职场文书
教学实习自我评价
2014/01/28 职场文书
大学理论知识学习自我鉴定
2014/04/28 职场文书
中药学自荐信
2014/06/15 职场文书
委托证明书
2014/09/17 职场文书
道路交通事故人身损害赔偿协议书
2014/11/19 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
四十年同学聚会致辞
2015/07/28 职场文书
《我在为谁工作》:工作的质量往往决定生活的质量
2019/12/27 职场文书