problem:
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.
思路是只保存最后两个重复的元素,所以对nums进行循环,若和两位后的数据不一样,则保存下来,否者不操作。
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int result=0;
if(nums.size() < 3)
return nums.size();
vector<int> temp;
for(int i=0; i<nums.size()-2; i++)
{
if(nums[i] != nums[i+2])
{
temp.push_back(nums[i]);
result++;
}
}
temp.push_back(nums[nums.size()-2]);
temp.push_back(nums[nums.size()-1]);
nums = temp;
return result+2;
}
};