#include <iostream>
#include <vector>
using namespace std;
//给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度
//不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成
//元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素
//解题思路:我们只需要一个变量用来计数,然后遍历原数组,如果当前的值和给定值不同,我们就把当前值覆盖计数变量的位置,并将计数变量加1
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int length = nums.size();
int j = 0;
//用i遍历整个数组,用j来表示新数组的下标
for (int i = 0; i < length; i++)
{
if (nums[i] != val)//不等于val值另放到j下面的新数组
{
nums[j++] = nums[i];
}
}
return j;
}
};
int main()
{
vector<int> nums = { 0, 1, 2, 2, 3, 0, 4, 2 };
int val = 2;
Solution solu;
int number = solu.removeElement(nums,val);
for (int i = 0; i < number; i++)
{
cout << nums[i] << " ";
}
system("pause");
return 0;
}
[LeetCode]27 Remove Element 移除元素
最新推荐文章于 2022-09-04 14:04:50 发布