题目描述:
Follow up for ”Remove Duplicates”: What if duplicates are allowed at most twice?
For example, Given sorted array A = [1,1,1,2,2,3],
Your function should return length = 5, and A is now [1,1,2,2,3]
注:本系列代码全部在LeetCode上编译通过,并且在本地VS2015编译通过;
思路分析;
本例由于已经排序,因此只需要比较后面第二个和当前位置的数值是否一样即可;
#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if (nums.size() < 2) return nums.size();
int index = 2;
for (int i = 2; i < nums.size(); i++) {
if (nums[i] != nums[i - 2])
nums[index++] = nums[i];
}
return index;
}
};
int main(int argc, char** argv) {
Solution test_;
vector<int> test = {1,1,1,1,2,2,2,3,3,4,4,4};
cout << "Result:" << test_.removeDuplicates(test) << endl;
system("pause");
return 0;
}
结果如下: