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语言-在mac下brew升级golang
Apr 25 Golang
Go语言中的UTF-8实现
Apr 26 Golang
golang json数组拼接的实例
Apr 28 Golang
Golang中interface{}转为数组的操作
Apr 30 Golang
Go语言 go程释放操作(退出/销毁)
Apr 30 Golang
Golang 编译成DLL文件的操作
May 06 Golang
浅谈Go语言多态的实现与interface使用
Jun 16 Golang
Go语言基础函数基本用法及示例详解
Nov 17 Golang
golang生成vcf通讯录格式文件详情
Mar 25 Golang
Go 中的空白标识符下划线
Mar 25 Golang
Golang流模式之grpc的四种数据流
Apr 13 Golang
Golang 链表的学习和使用
Apr 19 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
WINDOWS服务器安装多套PHP的另类解决方案
2006/10/09 PHP
给php新手谈谈我的学习心得
2007/02/25 PHP
PHP比你想象的好得多
2014/11/27 PHP
浅谈PHP中Stream(流)
2015/06/08 PHP
4种PHP异步执行的常用方式
2015/12/24 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
2016/11/16 PHP
PHP实现微信对账单处理
2018/10/01 PHP
PHP中Static(静态)关键字功能与用法实例分析
2019/04/05 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
php数值计算num类简单操作示例
2020/05/15 PHP
IE6与IE7中,innerHTML获取param的区别
2009/03/15 Javascript
商城常用滚动的焦点图效果代码简单实用
2013/03/28 Javascript
配置Grunt的Task时通配符支持和动态生成文件名问题
2015/09/06 Javascript
JavaScript File分段上传
2016/03/10 Javascript
JavaScript学习笔记之数组的增、删、改、查
2016/03/23 Javascript
15个非常实用的JavaScript代码片段
2016/12/18 Javascript
jQuery插件zTree实现获取当前选中节点在同级节点中序号的方法
2017/03/08 Javascript
Bootstrap面板(Panels)的简单实现代码
2017/03/17 Javascript
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
2017/05/13 NodeJs
详解阿里Node.js技术文档之process模块学习指南
2021/01/04 Javascript
Python中列表和元组的相关语句和方法讲解
2015/08/20 Python
Python 转义字符详细介绍
2017/03/21 Python
Python 类的继承实例详解
2017/03/25 Python
PyQt5实现拖放功能
2018/04/25 Python
Python读写zip压缩文件的方法
2018/08/29 Python
python3 实现对图片进行局部切割的方法
2018/12/05 Python
在pycharm中使用git版本管理以及同步github的方法
2019/01/16 Python
pip指定python位置安装软件包的方法
2019/07/12 Python
python3 实现函数写文件路径的正确方法
2019/11/27 Python
英国奢侈皮具品牌:Aspinal of London
2018/09/02 全球购物
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
秘书专业自荐信范文
2013/12/26 职场文书
幼儿园大班毕业教师寄语
2014/04/03 职场文书
幼儿园健康教育方案
2014/06/14 职场文书
毕业生自荐信范文
2015/03/05 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书