//删除重复元素后,不改变数组顺序,空间复杂度为O(1),得到新的数组
void DeleteDupNumbers(vector<int> &nums)
{
vector<int>::iterator it, it1;
for (it = ++nums.begin(); it != nums.end();)
{
it1 = find(nums.begin(), it, *it); //若当前位置之前存在重复元素,删除当前元素,erase返回当前元素的下一个元素指针
if (it1 != it)
it = nums.erase(it);
else
it++;
}
}
//删除重复元素后, 不重复数据的长度
int removeDuplicates(vector<int> &nums)
{
if (nums.size() == 0)
return;
int len = 1;
for (int i = 1; i < nums.size(); i++)
{
if (nums[i] != nums[i - 1])
nums[len++] = nums[i];
}
return len;
}
//删除指定元素之后,剩余数据的长度
int removeElement(vector<int> &nums, int val)
{
if (nums.size() == 0)
return 0;
int new_len = 0;
for (int i = 0; i < nums.size(); i++)
{
if (nums[i] != val)
nums[new_len++] = nums[i];
}
return new_len;
}
C++ vector中如何删除重复元素,且保留原顺序,空间复杂度为O(1)
最新推荐文章于 2024-07-21 21:27:37 发布