class Solution {
public:
int removeDuplicates(vector<int>& nums) {
size_t n = nums.size();
if (n == 0) return 0;
int ret = 0;
int begin = 0;
int newb = 0;
for (size_t i = 0; i != n; ++i) {
if (nums[begin] != nums[i]) {
int num = (i - begin > 2) ? 2: i - begin;
for (size_t j = 0; j != num; ++j)
nums[newb++] = nums[i - 1];
begin = i;
}
}
{
int num = (n - begin > 2) ? 2: n - begin;
for (size_t j = 0; j != num; ++j)
nums[newb++] = nums[n - 1];
}
return newb;
}
};
参考后
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
size_t n = nums.size();
if (n <= 2) return n;
int newi = 2;
for (size_t i = 2; i != n; ++i) {
if (nums[newi - 2] != nums[i]) {
nums[newi++] = nums[i];
}
}
return newi;
}
};