leetcode传送门
题目大意
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-element
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
算法思路
- 快慢指针
- 对于***慢指针i***来说nums就是一个初始为空的数组,需要通过***快指针***来不断在nums后面push新元素
代码实现
/**
* @param {number[]} nums
* @param {number} val
* @return {number}
*/
var removeElement = function(nums, val) {
let i,j;//i慢j快
i = 0;//用于数组长度为0的特判
for( j = 0; j < nums.length; j++) {
if(nums[j] !== val) {
nums[i] = nums[j];
i ++;
}
}
return (i);
};
review:
类似算法题