原题地址:力扣
这题要求原地删除。vector中删除元素的方法有pop_back和erase。此外还有一个remove,不过该方法是<algorithm>中的,并且不会改变原容器的大小。
#include <iostream>
#include<vector>
#include<algorithm>
#include<unordered_map>
using namespace std;
int removeDuplicates(vector<int>& nums) {
//考虑特殊情况
if (nums.size() == 0 || nums.size() == 1)
{
return nums.size();
}
//迭代器
vector<int>::iterator itor=nums.begin();
int flags = nums[0];
itor++;//跳到下一个位置
vector<int>::iterator temp;
while (itor != nums.end()){
if (*itor != flags){
//下一个元素和当前元素不重复
flags = *itor;
itor++;
}
else{
//如果相等
itor = nums.erase(itor);
}
}
return nums.size();
}
int main()
{
vector<int> vec = { 0, 0, 1, 1, 1, 2, 2, 3, 3, 4};
int target = 6;
int res = removeDuplicates(vec);
cout <<res<< endl;
for (int i = 0; i < vec.size(); i++)
{
cout << vec[i] << endl;
}
system("pause");
return 0;
}