Follow up for "Remove Duplicates":What if duplicates are allowed at most twice?
For example,Given sorted array nums = [1,1,1,2,2,3],
Your function should return length = 5, with the first five elements ofnums being 1, 1, 2, 2 and3. It doesn’t matter what you leave beyond the new length.
此题要求数组中每个元素出现的个数不大于两次。所以需要加一个计数器来统计每个元素出现的次数。
代码如下:
int removeDuplicates2(vector<int>& nums) {int length = nums.size();if (length == 0)return 0;int j=0;int times = 1;for (int i=1; i<length; i++){if (nums[i] != nums[j]){nums[++j] = nums[i];times = 1;}else{times++;if (times == 2){nums[++j] = nums[i];}}}return j+1;}
,来说是非者,便是是非人。