题目考察的知识点 :数组排序

题目解答方法的文字分析:判断数组长度是否小于3,小于3则直接返回数组长度。否则从1号位开始遍历数组,判断元素是否已经有3个,如果有,i指针继续向前遍历,新数组指针则等待未满3个元素的值出现,再记录下来

本题解析所用的编程语言:c++

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @return int整型
     */
    int remove_duplicates_v3(vector<int>& nums)
    {
        // write code here
        int n = nums.size();
        int a = 0, b = 0, c = -1;
        for (int i = 0; i < n; ++i)
        {
            if (i == 0 || nums[i] != c)
            {
                nums[a++] = nums[i];
                c = nums[i];
                b = 1;
            } 
            else 
            {
                if (nums[i] == c) 
                {
                    if (b >= 3)
                        continue;
                    else 
                    {
                        nums[a++] = nums[i];
                        b++;
                    }
                }
            }
        }
        return a;
    }
};