LC27.RemoveElements


题目

原地移除nums中不等于val的元素,返回nums中不等于val的元素的数量

题解

#include <iostream>
#include <vector>

class Solution
{
public:
	int removeElement(std::vector<int>& nums, int val)
	{
		if (nums.empty()) return 0;
		
		int slow = 0;
		for (int fast = 0; fast < nums.size(); ++fast)
			if (nums[fast] != val) nums[slow++] = nums[fast];

		return slow;
	}
};

//erase-remove
class Solution_
{
public:
	int removeElement(std::vector<int>& nums, int val)
	{
		nums.erase(remove(nums.begin(), nums.end(), val), nums.end());
		return nums.size();
	}
};