方法一:双指针,一个指针负责重构数组,另一个指针负责遍历数组
class Solution
{
public:
int removeElement(vector<int>& nums, int val)
{
int i = 0;
int j = 0;
while (j < nums.size())
{
if(nums[j] != val)
nums[i++] = nums[j];
j++;
}
return i;
}
};
方法二:利用STL erase的特点不使用额外空间就可以解决
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
for(int i=0;i<nums.size();)
{
if(nums[i]==val)
nums.erase(nums.begin()+i);
else
i++;
}
return nums.size();
}
};