题目:对上一题的延伸,每个数字可以出去2次。
思路:还是设置两个下标。第一个lenxb标记已去重的地方,第二个i标记待处理的位置。每次比较时,比较lenxb和lenxb-1两个位置,如果都相等,说明出现超过两次了;否则满足要求。
注意:通过上面的思路可知,特判情况是长度小于等于2时。
PS:提交后16ms,在此题的提交时间第一队列最前位置。Yes!
代码:
class Solution { public: int removeDuplicates(vector<int>& nums) { if(nums.size()<=2) return nums.size(); int lenxb=1;//长度的下标 for(int i=2;i<nums.size();++i) { if(nums[i]==nums[lenxb] && nums[i]==nums[lenxb-1]) continue; nums[++lenxb]=nums[i]; } return lenxb+1; } };