/**
* Given an array and a value, remove all instances of that value in place and return the new length.
*
* Do not allocate extra space for another array, you must do this in place with constant memory.
*
* The order of elements can be changed. It doesn't matter what you leave beyond the new length.
*
* Example:
* Given input array nums = [3,2,2,3], val = 3
*
* Your function should return length = 2, with the first two elements of nums being 2
*/
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int removeElement(vector<int>& nums, int val)
{
if (nums.empty()) return 0;
int counter = 0;
int len = nums.size();
vector<int>::iterator it = nums.begin();
for (; it != nums.end();)
{
if (*it == val)
{
counter++;
it = nums.erase(it);
}
else
{
it++;
}
}
return len - counter;
}
int main()
{
vector<int> nums{ 3, 2, 2, 3, 3 };
cout << removeElement(nums, 3);
system("pause");
return 0;
}
【leetcode】27. Remove Element
最新推荐文章于 2024-06-25 21:29:50 发布