Leetcode_27_Remove Element

直接用vector的迭代器和erase函数来实现了,不过要注意的是,erase函数实现的细节如下:

1.删除单个元素前后,迭代器的指向都是不变的,而将该元素删除之后,所删除元素后边的元素会全部向前复制一个元素位置

2.删除一段段元素之后,后面的元素(从iter_end开始到vector.end())会被复制到被删除元素段开始的地方(iter_begin开始),而vector.end()也根据删除的元素个数往前移动

所以,在删除完一个元素后,就相当于自动移向了下一个元素了(迭代器指向不变,但向后一个元素复制了值)不需要自己手动操作迭代器

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        vector<int>::iterator it=nums.begin();
		while(it<nums.end())
		{
			if(*it!=val)
				it++;
			else
				nums.erase(it);
		}
		return nums.size();
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_36863465/article/details/84888548