题目链接:LeetCode 27. 移除元素
本题大意是要对一个数组进行原地删除数值等于 val
的元素。
双指针算法:
通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。
快指针(p指针):寻找新数组的元素 ,新数组就是不含有目标元素的数组
慢指针(q指针):指向更新 新数组下标的位置
当遇到与val
相等的元素时,p指针继续往后移动,q指针不动,这样来更新原数组中的元素。
代码如下:
func removeElement(nums []int, val int) int {
// 双指针算法
p:=0
q:=0
for n:=len(nums); p<n ;p++{
if nums[p] == val{
continue
}else{
nums[q] = nums[p]
q++
}
}
return q
}
简化一下:
func removeElement(nums []int, val int) int {
length:=len(nums)
res:=0
for i:=0;i<length;i++{
if nums[i]!=val {
nums[res]=nums[i]
res++
}
}
nums=nums[:res]
return res
}
标签:27,val,nums,int,题解,元素,数组,移除,指针
From: https://www.cnblogs.com/lxing-go/p/17374355.html