一次AC,twoPoint方式。细节需要考虑。在草稿上写好,再敲上去,可以充分考虑很多细节。
class Solution { public: int removeDuplicates(vector<int>& nums) { if(nums.size()<=2) return nums.size(); int first=0; int second=1; int now=nums[0]; int count=1; while(second<nums.size()) { if(nums[second]==now) { count++; if(count<=2) { swap(nums[first+1],nums[second]); first++; second++; } else { while(second<nums.size()&&nums[second]==now) second++; if(second<nums.size()) { count=1; now=nums[second]; swap(nums[first+1],nums[second]); first++; second++; } } } else { count=1; now=nums[second]; swap(nums[first+1],nums[second]); first++; second++; } } return first+1; } };