LeetCode | 80. Remove Duplicates from Sorted Array II

来源:互联网 发布:淘宝团队管理制度 编辑:程序博客网 时间:2024/05/16 12:45

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.

Solution

删除冗余元素,每种数字最多出现两次。考虑使用vector自带的erase( )函数,用两个指针 it 和 it2来记录当前访问的位置,用 Count记录当前种类数字出现的次数,超过两次就把它删了,最后返回 nums数组的长度。

Code

// 13 ms#include <iostream>#include <vector>using namespace std;int removeDuplicates(vector<int>& nums){    int Count = 0;      //用于记录当前种类数字数量    vector<int>::iterator it = nums.begin();    vector<int>::iterator it2 = nums.begin();    it++;       //从第二个开始    while(it != nums.end())    {        if(*it == *it2)        {            Count++;            if(Count == 2)            {                nums.erase(it);                it = it2; it++;                Count--;            }            else            {                it++; it2++;            }        }        else        {            Count = 0;            it++; it2++;        }    }    return nums.size();}int main(){    vector<int> Input;    int k;    while(cin>>k)    {        Input.clear();        for(int i=0;i<k;i++)        {            int t;            cin>>t;            Input.push_back(t);        }        int res = removeDuplicates(Input);        for(int i=0;i<res;i++)            cout<<Input[i];        cout<<endl;    }    return 0;}
阅读全文
1 0
原创粉丝点击