代码随想录:移除元素
题目中的原地指的是不能开创新的数组。
简单双指针解决问题,实际上是vector中的erase的实现原理
//erase和迭代器的使用方法
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = vec.begin() + 2; // 指向元素 3
//这所谓迭代器其实就是封装后的指针啊
vec.erase(it); // 删除元素 3
代码写的有点铸币,可以一个循环搞定的,复杂度一样懒得改了
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int k=0;
for(int i=0;i<nums.size();i++)
{
if(nums[i]==val){
nums[i]=-1;
k++;
}
}
int target = 0;
for(int i=0;i<nums.size();i++)
{
if(nums[i]!=-1){
nums[target]=nums[i];
target++;
}
}
return nums.size()-k;
}
};
标签:vector,int,代码,随想录,erase,vec,移除
From: https://www.cnblogs.com/huigugu/p/18544927