80. Remove Duplicates from Sorted Array II

Follow up for "Remove Duplicates":
What if duplicates are allowed at most twice?

For example,
Given sorted array nums = [1,1,1,2,2,3],

Your function should return length = 5, with the first five elements of nums being 1, 1, 2, 2 and 3. It doesn't matter what you leave beyond the new length.

思路

p变量 保存新数组尾指针
与第一题差不多
由于可以重复两次
本来是与前一个元素不相等

nums[i] != nums[p - 1]

改成与前一个元素的前一个元素不相等

nums[i] != nums[p - 2]
int removeDuplicates(vector<int>& nums) {
    if(nums.size() < 3) return nums.size();
    // 0 1 元素不变
    int p = 2;
    for(int i = 2; i < nums.size(); i++){
        if(nums[i] != nums[p - 2])
            nums[p++] = nums[i];
    }
    return p;
}

你可能感兴趣的:(80. Remove Duplicates from Sorted Array II)