作者:看那个码农
公众号:看那个码农
上期内容介绍了Go语言学习之创建方法|Go主题月
- 方法的来源
- 使用方法
- 创建方法集
- 使用方法和指针
- 方法和函数的区别
本篇内容将继续带领大家走进Go语言的世界。
1.本文简介
Go语言学习之力扣-删除有序数组中的重复项
2.题目描述
给你一个有序数组nums
,请你原地删除重复出现的元素
,使每个元素只出现一次,返回删除后数组的新长度
。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)
额外空间的条件下完成。
示例 1:
输入:nums = [1,1,2]
输出:2, nums = [1,2]
解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。
不需要考虑数组中超出新长度后面的元素。
示例 2:
输入:nums = [0,0,1,1,1,2,2,3,3,4]
输出:5, nums = [0,1,2,3,4]
解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4 。
不需要考虑数组中超出新长度后面的元素。
提示:
- 0 <= nums.length <= 3 *
- -104 <= nums[i] <=
- nums 已按升序排列
3.思路与方法
由题意最后只用输出新数组的长度
- 我们可以利用
遍历
,从数组第一个元素
进行遍历; - 依次对比元素是否相同,将
不同的元素
往前移动; - 最后输出数组
不同元素的那部分长度
即可。
例如:我们用一个例子来直观地说明。
设定一个初始数组
num=[1,1,2,2,3,3]
设定两个起点进行遍历
node=0,i=1,
num[node]=1,num[i]=1,
如果num[node]!=num[i]
通过node++
,使得node++
的值等于此时i
的值。
即num[node]=num[i]
利用这样的方式,将同一个数组的不同元素都往前移动。
4.代码实现如下:
func removeDuplicates(nums []int) int {
node:=0
for i:=1;i<len(nums);i++{
if nums[node]!=nums[i]{
node++
nums[node]=nums[i]
}
}
return node+1
}
输出为:
如果你觉得这篇内容对你有帮助的话:
1、点赞支持下吧,让更多的人也能看到这篇内容
2、关注公众号:看那个码农,我们一起学习一起进步。