LeetCode 80. Remove Duplicates from Sorted Array II
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.
水题,不要用vector.erase()方法, 直接删除操作vector内部会遍历后边元素, 所以时间花费较大, 用一个临时数组,保存一下就OK了
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
vector<int> res;
for(int i=0, s = 0; i<nums.size(); ++ i)
{
if(i == 0 || nums[i] != nums[i-1])
s = 0;
else
s ++;
if(s >= 2)
continue;
res.push_back(nums[i]);
}
nums.clear();
nums = res;
return int(nums.size());
}
};