考察知识点:数组、双指针

题目分析:

将有序数组删掉重复的元素,可以遍历一遍数组,用指针j指向下一个满足条件要保存下来的值。当i指针指向第一个数,或者前一个数与现在的数不相同时满足条件。

因为不满足条件时j就不会向右移动,j指针总是比i指针慢,j指针之前的数都是满足条件的数,j的值就是最终结果(0 ~ j - 1共j个数)

所用编程语言:C++

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @return int整型
     */
    int remove_duplicates(vector<int>& nums) {
        // write code here
        //就是除去相同的元素
        int i = 0, j = 0;
        int size = nums.size();
        for (int i = 0; i < size; i++) {
            if (i == 0 || nums[i - 1] != nums[i]) {
                nums[j] = nums[i];
                j++;
            }
        }
        return j;
    }
};