[leetcode 80, Medium] Remove Duplicates from Sorted Array II

Problem:

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.

Analysis:


Solutions:

C++:

    int removeDuplicates(vector<int>& nums) 
    {
        if(nums.size() <= 2)
            return nums.size();
            
        for(vector<int>::iterator it = nums.begin(); it != nums.end();) {
            if(it == nums.begin() || (it != nums.end() - 1 && *it != *(it - 1))) {
                if(*it != *(it + 1)) {
                    ++it;
                    continue;
                } else {
                    ++it;
                    if(*it != *(it + 1)) {
                        ++it;
                        continue;
                    } else {
                        for(++it; it != nums.end() && *it == *(it - 1);) {
                            it = nums.erase(it);
                        }
                    }
                }
            } else
                ++it;
        }
        
        return nums.size();
    }
Java:


Python:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章