题目:给定一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,返回移除后数组的新元素不要使用额外的数组空间,你必须在原地修改输入数组并在使用 o(1) 额外空间的条件下完成。
1.思路:
- 我们使用一个变量i记录不等于val的数组元素
- 我们使用另一个变量j遍历数组中的所有元素。
- 思路与删除排序数组中的重复项类似。
2.代码:
public:
int removeElement(vector<int>& nums, int val) {
int i=0;
int j;
for(j=0;j<nums.size();j++)
if(nums[j]!=val)
{
nums[i]=nums[j];
i++;
}
return i;
}
};
3.分析:
- 空间复杂度为o(1),时间复杂度为o(n).