方法1:双指针,快指针遍历数组,慢指针表示新数组数组最后一个元素的下标位置

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

方法2:不断记录nums数组中出现的重复数字的个数为nums_e,然后不断把不重复的数字前移nums_e个

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