题目链接:
https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/
方法一:只用erase:其返回值指向删除元素的第一个下标
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int len=nums.size();
if(len==0)return 0;
if(len==1)return 1;
int num_temp=nums[0];
auto it=nums.begin()+1;
while(it!=nums.end())
{
// cout<<*it<<endl;
if(*it==num_temp)
{
it =nums.erase(it);
}
else
{
num_temp=*it;
it++;
}
}
return nums.size();
}
};
方法二:使用erase和remove(remove不是在vector类中实现的):remove返回删除对应元素后的非改元素的后一个下标
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int len=nums.size();
if(len==0)return 0;
int temp_num=nums[0];
for(int i=1;i<len;i++)
{
if(nums[i]==temp_num)
nums[i]=INT_MAX;
else
temp_num=nums[i];
}
nums.erase(remove(nums.begin(),nums.end(),INT_MAX),nums.end());
return nums.size();
}
};