移除元素
题目描述

思路
思路:定义两个指针变量指向数组第一个位置,判断nums[scr]是否等于val
case1:相等,scr++;
case2:不相等,nums[dst]=nums[scr],scr++,dst++;
时间复杂度:O(n);空间复杂度:O(1);
画图解释
1.定义两个指针变量指向数组第一个位置

2.判断nums[scr]是否等于val
相等,scr++

不相等,nums[dst]=nums[scr],scr++,dst++;



此时,src跳出了循环,dst指向的是数组下标为2的位置,而我们当前要返回数组的有效数据个数是2,那我们直接返回dst就好了。注意,我们的结束条件是src要小于我们的数组长度。
完整代码
int removeElement(int* nums, int numsSize, int val)
{
int str=0,dst=0;
while(str<numsSize)
{
if(nums[str]==val)
{
str++;
}
else
{
nums[dst]=nums[str];
str++;
dst++;
}
}
//此时dst指向的位置就是要返回的个数
return dst;
}
















![[C#学习笔记]Newtonsoft.Json](https://i-blog.csdnimg.cn/direct/c5018ade43f3404a86d74791a58c279c.png)
