1.暴力法
数组的元素在内存地址中是连续的,不能单独删除数组中的某个元素,只能覆盖。
class Solution{
public:
int removeElement(vector<int>& nums, int val)
{
int size = nums.size();
for(int i =0; i<size;i++)
{
if(nums[i]==val)
{
for(int j =i+1;j<size;j++)
{
nums[j-1]=nums[j];
}
i--;
size--;
}
}
return size;
}
};
2.双指针法
双指针法(快慢指针法):通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。
定义快慢指针
快指针:寻找新数组的元素,新数组就是不含有目标元素的数组
慢指针:指向更新 新数组下标的位置
class Solution{
public:
int removeElement(vector<int>$ nums, int val)
{
int slowIndex = 0;
for(int fastIndex = 0; fastIndex<nums.size();fastIndex++)
{
if(val ! =nums[fastIndex])
{
nums[slowIndex] = nums[fastIndex];
slowIndex++;
}
}
return slowIndex;
}
};