移除元素
题目要求
移除数组中所有的元素val,要求时间复杂度为O(N),空间复杂度为O(1),返回剩余元素的长度。
思路
题目要求空间复杂度位O(1),因此不能开辟空间,只能在原数组上进行操作,时间复杂度位O(N),我们可以采用覆盖的方式,覆盖原本的数组。
代码实现
int removeElement(int* nums, int numsSize, int val){
int p1 = 0;
for (int i = 0; i < numsSize; i++)
{
if (nums[i] != val)
{
nums[p1] = nums[i];
p1++;
}
}
return p1;
}