LeetCode - 80. Remove Duplicates from Sorted Array II


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

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

  1. int removeDuplicates(int* nums, int numsSize) {
  2. if(numsSize == 0)
  3. {
  4. return 0;
  5. }
  6. else
  7. {
  8. int i = 0 , check = 0;
  9. for(int j=1; j<numsSize ; j++)
  10. {
  11. if(nums[i]==nums[j])
  12. {
  13. ++check;
  14. if(check<2)
  15. {
  16. nums[++i] = nums[j];
  17. }
  18. }
  19. else
  20. {
  21. nums[++i] = nums[j];
  22. check = 0;
  23. }
  24. }
  25. return i+1;
  26. }
  27. }

留言