[leetcode] 80. Remove Duplicates from Sorted Array II解題報告


タイトルリンク:https://leetcode.com/problems/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  1122  and  3 . It doesn't matter what you leave beyond the new length.
考え方:前と同じように、カウンタが1つ増えただけで、要素を削除するには反復器ポインタで削除することに注意してください.
コードは次のとおりです.
class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        if(nums.size() == 0) return 0;
        int old = nums[0], cnt = 1;
        vector<int>::iterator it = nums.begin()+1;
        while(it != nums.end())
        {
            if(*it == old)
            {
                if(cnt <2)
                { 
                    cnt++;
                    it++;
                }
                else
                    nums.erase(it);
            }
            else
            {
                old = *it;
                cnt = 1;
                it++;
            }
        }
        return nums.size();
    }
};