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