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 of
nums being 1
, 1
, 2
, 2
and
3
. 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; }
时间: 2024-09-27 22:34:01