如果有一个数组 1 2 3 4 5,如果想要删除3,就是要把4往前移动一位,把3覆盖掉,然后把5在往前移一位把4覆盖掉。
注意:erase函数的时间复杂度是O(n)而不是O(1)。
最简单的方法是暴力实现:两次for循环,第一次找到并删除元素,第二次将数组元素前移。
实现方法:快慢指针:
快指针寻找新数组所需要的元素,慢指针指向新数组的位置
伪代码:
slow = 0;
for(fast = 0; fast < numsize; fast++)
{
if(nums[fast] != val)//当快指针指向新数组需要的元素时
{
nums[slow] = nums[fast];
slow++;
}
}