golang 数组去重,利用map的实现
目录
golang数组去重利用mapgolang删除排序数组中的重复项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 }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?