难度:中等。
标签:数组,双指针。
想到了双指针,但是这个题我真的想哭了,开始怀疑自己的智商。怎么想都不对,这简直就是脑筋急转弯。
别人的代码都超级简单。
正确解法1:
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int n = nums.size();
if(n <= 2)return n;
int idx = 2;
for(int i = 2; i < n; i++){
if(nums[i] != nums[idx - 2]){
nums[idx] = nums[i];
idx++;
}
}
return idx;
}
};
结果:
正确解法2:
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int n = nums.size();
int count = 1, j = 1;
for(int i = 1; i < n; i++){
if(nums[i] == nums[i - 1]){
count++;
}
else{
count = 1;
}
if(count <= 2){
nums[j] = nums[i];
j++;
}
}
return j;
}
};
结果:
抄完两个解法,我觉得我已经是个废人了。
自闭了。