[LeetCode]Remove Duplicates from Sorted Array II

来源:互联网 发布:iphone视频截图软件 编辑:程序博客网 时间:2024/06/07 02:19

题目描述:给出一列有序数组,最多可以保留两个相同元素,如果还有更多次重复的话,那么要删除重复的元素,并且要求返回元素个数。

          比如说,[1,1,1,2,2,3]最后要输出5,[1,1,2,2,3]

解题思路:Two Pointers。两个指针一前一后,相对上一题,增加一个times(控制元素出现个数)的变量,初始化为一次。因为任何一个出现的元素最少出现一次,少于一次它就是不出现了_(:з」∠)_

==============================================================================================================

综上而述,代码如下:一次AC.

class Solution {public:    int removeDuplicates(vector<int>& nums) {                int N = nums.size();        if ( N<=2 ) return N;                vector<int>::iterator iter=nums.begin();        vector<int>::iterator iter1=iter+1;                int times=1;                while( iter1 != nums.end() )        {            if( *iter==*iter1 )             {                ++times;                if(times==2) iter1++;                if(times>2) nums.erase(iter1);            }            else            {                if( times==1 ) ++iter;                if( times>=2 ) iter+=2;                ++iter1;                times=1;            }        }        return N=nums.size();    }};


0 0
原创粉丝点击