Leetcode(9)-移除元素

给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

class Solution {
public:
    int removeElement(vector<int>& nums, int val) 
    {
        for(int i=0;i<nums.size();i++)
        {
            if(nums[i]==val)
            {
                nums.erase(nums.begin()+i);
                i--;
            }
        }
        return  nums.size();
    }
};

同样是利用了STL中的vector中的erase函数,erase函数的用法有两种,

iterator erase (iterator position);  //删除指定元素

iterator erase (iterator first, iterator last);  //删除指定范围内的元素

返回值是删除后的下一个元素的迭代器。

我们这里使用的是第一种用法,删除指定的元素,因为参数是迭代器,所以就使用了erase(nums.begin()+i)表示删除第i个元素。同样erase之后会影响到整个vector的长度。

猜你喜欢

转载自www.cnblogs.com/mini-coconut/p/8977070.html