1. 程式人生 > >26. 刪除排序陣列中的重複項

26. 刪除排序陣列中的重複項

題目

程式碼

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        if(nums.size()<=1)
            return nums.size();

        int repeatNum=0;//重複的數字個數
        int newNum=nums[0];//每次判斷用的新的數字

        //迴圈將那些第一次遇到的不同的數字前移,如果是重複數字則+1
        for(int i=1;i<nums.size();i++)
        {
            if(nums[i]==newNum)
            {
                repeatNum++;               
            }
            else
            {
                newNum=nums[i];
                nums[i-repeatNum]=nums[i];
            }
            
        }
        return nums.size()-repeatNum;
    }
};

思路

在一個迴圈中遍歷陣列,比如vec[1,1,2,2,3],迴圈從索引1開始,由於vec[1]和vec[0]相同,所以重複數字+1,第一次遇到2時就將2前移一個位置,當第二次遇到2時,重複次數再+1,當第一次遇到3時,就前移2個位置。最後前面3位數字為1,2,3。返回的長度為總長度減去重複次數。