Remove Duplicates from Sorted ArrayII---80---有序數組去重2

題目描述:有序數組去重,允許重複次數2
思路:同樣採用快慢指針的方法,多增加一個count記錄還有幾次重複,初始值1
1 一開始快指針指向1,慢指針指向0
2 如果快慢指針對應值相等即重複,並且count爲0,那麼快指針走一步
3 否則:如果快慢指針對應值相等,即重複一次,那麼count減1,否則,不重複,count恢復爲1
此時,慢指針走一步,把快指針的值賦給慢指針,然後快指針走一步
返回慢指針+1

#include<iostream>
#include<vector>

 using namespace std;

 class Solution
 {
     public:
     int removeDuplicates2(int nums[],int n)
     {
         int fast = 1, slow = 0;
         int count = 1;
         if(n <= 2)
         {
            return n;
         }           
        
        while(fast < n)
        {
            if(nums[fast] == nums[slow] && count == 0)
                ++fast;
            else
            {
                if(nums[fast] == nums[slow])
                    --count;
                else 
                    count = 1;
                nums[++slow] = nums[fast++];
            }
        }
        return slow+1;
     }
 };

 int main()
 {
     Solution s;
     int v[]={1,1,1,2,2,3};
    // int data;
    // vector<int> v= {1,1,1,2,2,3};
   /*  while(cin >> data)
    {
        v.push_back(data);
    } */
     int length = s.removeDuplicates2(v,6);
     cout << length;
     return 0;
 }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章