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