JavaScript 数组移除元素:原地移除所有等于给定值的元素
可以使用双指针的方法来解决这个问题。定义两个指针 left 和 right,初始时 left 指向数组的起始位置,right 指向数组的末尾位置。
然后开始遍历数组,如果 nums[right] 等于 val,则将 right 指针左移,直到找到一个不等于 val 的元素。然后将该元素复制到 nums[left],同时 left 指针右移一位。
重复上述过程,直到 left 和 right 指针相遇。最后返回 left 指针的值即为新的数组长度。
以下是具体的实现代码:
function removeElement(nums, val) {
let left = 0;
let right = nums.length - 1;
while (left <= right) {
if (nums[right] === val) {
right--;
} else {
nums[left] = nums[right];
left++;
right--;
}
}
return left;
}
时间复杂度分析:该算法只需要遍历一次数组,所以时间复杂度为 O(n),其中 n 为数组的长度。
空间复杂度分析:该算法只使用了常数个额外变量,所以空间复杂度为 O(1)。
原文地址: https://www.cveoy.top/t/topic/qobC 著作权归作者所有。请勿转载和采集!