代码随想录:移除元素
题目中的原地指的是不能开创新的数组。
简单双指针解决问题,实际上是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;}
};