问题:给定一个数组,移除数组中的所有等于目标值的值,要求原地移除
难点:原地移除
方法:快慢指针
当快指针所指元素不是目标值时,赋值给慢指针
循环最后慢指针所指元素为移除元素后有效数组的最后一位
快指针指向最后
var removeElement = function(nums, val) {
let left = 0
for(let right=0;right<nums.length;right++){
if(nums[right]!=val){
nums[left] = nums[right]
left++
}
}
return left
};
暴力解法:
每遇到一个目标元素,就把后面所有元素往前移动(覆盖了当前元素), 同时i-- size--
var removeElement = function(nums, val) {
let size = nums.length
for(let i=0;i<size;i++){
if(nums[i]==val){
for(let j=i+1;j<size;j++){
nums[j-1] = nums[j]
}
i--
size--
}
}
return size
};