给你一个数组 nums 和一个值 val,你需要原地移除
所有数值等于 val 的元素,并返回移除后数组的新长度。
不要使用额外的数组空间,你必须仅使用O(1)额外空间
并原地修改
输入数组。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
由题目可知的条件和限制:
1.原地修改
2.不能使用额外的数组空间,空间复杂度为 O(1)
3.元素的顺序可以改变
主要思路:将不等于val的值往前放,元素交换位置~
双指针
function removeEle(arr,val){
var j = 0 // 定义变量,慢指针
var i = 0 // 快指针
for(;i<arr.length;i++){
if(arr[i]!=val){
// 如果当前元素不等于指定元素,将这个元素赋值给慢指针指向的元素
arr[j]=arr[i]
j++
}
}
return j
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。