LeetCode - 80. Remove Duplicates from Sorted Array II


題目意思:
  一樣是一個排序好的數字陣列,每個數字只允許重複出現兩次,最後回傳新陣列大小(不可宣告新陣列,只能從舊有的去改)

解決方式:
  利用迴圈的方式,一樣要判斷當鎮列為空的情況,然後從頭開始,跟下一個數字比較(因為排序過後可以直接這樣做),如果相等,宣告一個計數器++,當這個計數器 <2,允許此數字加入到新陣列去,如果是新數字進來,計數器歸零。

int removeDuplicates(int* nums, int numsSize) {
    if(numsSize == 0)
    {
        return 0;
    }
    else
    {
        int i = 0 , check = 0;
        for(int j=1; j<numsSize ; j++)
        {
            if(nums[i]==nums[j])
            {
                ++check;
                if(check<2)
                {
                    nums[++i] = nums[j];
                }
            }
            else
            {
                nums[++i] = nums[j];
                check = 0;
            }
        }
        return i+1;
    }
}

留言