给定一个数组 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的长度。