题目描述
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
题解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| int removeDuplicates(vector<int>& nums) { int res = nums.size(); if (res < 3)return res; bool twice = false; int pre = nums[0]; auto it = nums.begin() + 1; while( it !=nums.end()) { if (*it == pre) { if (twice) { it=nums.erase(it); res--; } else { twice = true; it++; } } else { pre = *it; twice = false; it++; } } return res; }
|