排序數組在原地上操作是典型的雙指針技巧,但這裏每個數能出現兩次,所以用一個額外變量來解除耦合。
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if(nums.size()==0) return 0;
int i = 0, k=0;
for(int j=1;j<nums.size();j++){
if(nums[i]==nums[j]&&k==1) continue;
else if(nums[i]==nums[j]&&k==0) {
k++;
nums[++i] = nums[j];
}
else {
nums[++i] = nums[j];
k = 0;
}
}
return i+1;
}
};