

代码:
cpp
// numsSize表示数组的长度
int removeElement(int* nums, int numsSize, int val) {
int src = 0;
int dest = 0;
//src小于数组的时候进入循环
while (src < numsSize)
{
//nums[src]是否等于vcal
if (nums[src] == val)
{
src++;
}
else
{
//先赋值,后自增
nums[dest++] = nums[src++];
}
}
//此时det指向的位置就是要返回的有效个数
return dest;
}
运行结果:

从上面的代码我们可以看出不管nums[src]是否等于val,dest都要++,那么我们的代码就可以优化一下。
cpp
// numsSize表示数组的长度
int removeElement(int* nums, int numsSize, int val) {
int src = 0;
int dest = 0;
//src小于数组的时候进入循环
while (src < numsSize)
{
//nums[src]是否等于vcal
if (nums[src] != val)
{
nums[dest] = nums[src];
dest++;
}
src++;
}
//此时det指向的位置就是要返回的有效个数
return dest;
}