LeetCode ||Remove Duplicates from Sorted Array II

来源:互联网 发布:淘宝达人如何合作 编辑:程序博客网 时间:2024/06/11 10:32
方法一:耗时20ms
class Solution {public:    int removeDuplicates(vector<int>& nums) {                if(nums.size() <= 2)            return nums.size();                    int i = 1;        int pre = nums[0];        int preCount = 1;                while(i < nums.size())        {            if(pre == nums[i])            {                preCount++;                                if(preCount > 2)//每次出现次数大于2就erase.                {                    //需要删除nums[i]                    nums.erase(nums.begin()+i);                    continue;                }            }            else            {                preCount = 1;                pre = nums[i];            }            i++;        }                return nums.size();    }};


方法二:耗时20ms

class Solution {public:    int removeDuplicates(vector<int>& nums) {                if(nums.size() <= 2)            return nums.size();                    int i = 1;        int pre = nums[0];        int preCount = 1;                int small = 1;//small表示移动数组后,指针应该指向的位置。                while(i < nums.size())        {            if(pre == nums[i])            {                preCount++;                                if(small != i)//需要移动i到small 位置上。                {                    nums[small] = nums[i];                }                if(preCount > 2)                {                    small--;                }            }            else            {                preCount = 1;                pre = nums[i];                                if(small!=i)                    nums[small] = nums[i];            }            i++;            small++;        }                while(small < nums.size())//将后面重复的数字删除。        {            nums.pop_back();        }        return nums.size();    }};


0 0