题目描述:

方法1:使用双指针,快慢指针,慢指针用于将所有不等于val的元素前移,fast指针用于寻找每个不等于val的元素

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int slow = 0;
        int fast = 0;
        while(fast < nums.size()){
            if(nums[fast] != val){
                nums[slow] = nums[fast];
                slow++;
            }
            fast++;
        }
        return slow;
    }
};

方法2: 不断记录nums中等于val的数字个数,计为num_e,然后不断把不等于val的数前移 num_e个

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int num_e = 0;
        for(int i=0;i<nums.size();i++){
            if(nums[i] == val){
                num_e++;
                continue;
            }
            else{
                nums[i-num_e] = nums[i];
            }
            
        }
        return nums.size()-num_e;
    }
};