题目描述:
代码实现:
1、指针实现
int removeElement(int* nums, int numsSize, int val) {
int* dst = nums, * src = nums;
int n1 = 0,n2=0;
while (n1+n2 < numsSize)
{
if (*src != val)
{
*dst = *src;
dst++;
src++;
n1++;//表示src走的步数
}
else
{
src++;
n2++;//表示src走的步数,也是需要移除(==val)的元素个数
}
}
return numsSize - n2;
}
2、数组下标访问实现
int removeElement(int* nums, int numsSize, int val) {
int dst = 0, src = 0;
int n = 0;
while (src < numsSize)
{
if (nums[src] != val)
{
nums[dst] = nums[src];
dst++;
src++;
}
else
{
src++;
n++;
}
}
return numsSize - n;
}