Description:
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.
解题思路:题目意思是说重复的元素最多只能计数2次,再多出现就计数2次,然后返回整个数组的个数。类似026那道题。
代码一:
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if (nums.size() <= 2)
return nums.size();
int idx = 2;
for(int i = 2; i < nums.size(); i ++) {
if(nums[i] != nums[idx-2])
nums[idx ++] = nums[i];
}
return idx;
}
};
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
const int n = nums.size();
int idx = 0;
for (int i = 0; i < n; i ++) {
if (i > 0 && i < n-1 && nums[i] == nums[i-1] && nums[i] == nums[i+1])
continue;
nums[idx ++] = nums[i];
}
return idx;
}
};