双指针法
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int length = nums.size();
if (nums.size()==0)
{
return 0;
}
int fastIndex = 0;
int slowIndex = 0 ;
for(;fastIndex < length;fastIndex++){
if(nums[fastIndex]!=val){
nums[slowIndex]=nums[fastIndex];
slowIndex++;
}
}
length = slowIndex;
return length;
}
};
暴力解法
如果在移动数组的时候写成j=i;j<length的形式,nums[j]=nums[j+1]会引发访问数组元素越界
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int length = nums.size();
if (nums.size()==0)
{
return 0;
}
for(int i =0;i<length; i++)
{
if(nums[i]==val){
//如果在移动数组的时候写成j=i;j<length的形式,nums[j]=nums[j+1]会引发访问数组元素越界
for(int j = i + 1;j < length;j++)
{
nums[j-1]=nums[j];
}
length--;
i--;
}
}
return length;
}
};