使用指针和数组结合的方法,设置变量i作为循环,令数组当中每一个数都进行判别。
设置指针p改变数组元素,当循环时发现与val变量相同的元素时,跳过,指针仍旧不变。当发现与val变量不同的元素时,指针将当前所指的地址变为该元素,并且指向下一个地址。
直到最后,指针令所有不属于查询元素的数按顺序排列,跳过所有与val相同的元素,形成新数组。计算数组中剩余元素的数量时,只要将当前所属的地址p减去数组的最初地址,即为p移动的距离,也就是剩余元素的个数。代码如下:
int removeElement(int* nums, int numsSize, int val){
if(numsSize<1) return numsSize;
int i=0,*p=nums;
while(i<numsSize)
{
if(nums[i]!=val)
{
*p=nums[i];
p++;
}
i++;
}
return p-nums;
}