LeetCode80——Remove Duplicates from Sorted Array II
题意:
让非递减的有序数组中重复的数字不超过2个。
思路:
两个索引i和j
i是大循环
j是每组相同数字内部为了统计遍历
就是从头到尾遍历并计数,因为是有序的,计数都是连续的比较方便。
一旦计数变量count超过2,则需要进行以下操作:
1.删去该元素
2.j-- ( 删去元素的索引的前一个元素)
当找完一组相同数据之后:
1.i=j-1 让i跳过重复的元素,从下一组重复元素的首元素开始。
代码:
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int count = 0;
int sum=0;
for (int i = 0; i < nums.size(); i++)
{
int temp = nums[i];
int j = i;
while ( nums[j] == temp)//一致
{
count++;
if (count > 2)
{
nums.erase(nums.begin() + j);//删除重复元素
j--;//索引减1,表示回退到删除元素之前的位置
count = 2;
}
j++;
if (j > nums.size()-1)
break;
}
sum += count;
count = 0;
i = j-1;//跳过重复元素
}
return sum;
}
};