###### tags: `LeetCode` `Medium` # LeetCode #80 [Remove Duplicates from Sorted Array II](https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii) ### (Medium) 給你一個有序數組 nums ,請你 原地 刪除重複出現的元素,使每個元素 最多出現兩次 ,返回刪除後數組的新長度。 不要使用額外的數組空間,你必須在 原地 修改輸入數組 並在使用 O(1) 額外空間的條件下完成 --- 與#26類似, 只是允許重複的次數從0變1, 因此需再新增一變數cd(count_duplicate)計算重複次數, count計算總共存取值的個數, tmp計算現在的nums[i]的值。 每次需考慮nums[i]是否等於tmp, 若否, 則更新tmp=nums[i], 並重置cd=0, 再存值nums[count++]=nums[i]。而若nums[i]=tmp但是cd=0, 此時更新cd=1, 並存入nums[count++]=nums[i]。而若nums[i]=tmp&&cd=1, 則此時nums[i]為重複值, 不做任何處理(drop掉)。 --- ``` class Solution { public: int removeDuplicates(vector<int>& nums) { int cnt=0; int cnt1=0;// 0 or 1 int tmp; for(int i=0;i<nums.size();i++){ if(nums[i]!=tmp){ tmp = nums[i]; cnt1=0; nums[cnt++]=nums[i]; } else if(nums[i]==tmp&&cnt1==0){ cnt1=1; nums[cnt++]=nums[i]; } } return cnt; } }; ```