代码随想录:移除元素

代码随想录:移除元素

题目中的原地指的是不能开创新的数组。

简单双指针解决问题,实际上是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;
    }
};
posted @ 2024-11-13 22:06  huigugu  阅读(1)  评论(0编辑  收藏  举报