1.原题目链接:力扣
2.题目内容
3.测试用例说明:
3.思路: 逆向思维:把元素不相等的拿下来尾插,放入一个新的顺序表,返回新的顺序表的个数
具体地:由于删除数组中等于val的元素,所以新的数组大小一定小于等于原数组的大小,可以把输出的数组写到输入的数组上,使用双指针的方法,src与dst,当nums[src] == val,src++,不等于nums[dst] = nums[src] ,dst++,src++,直到src遍历到原数组中的最后一个.最后dst的位置就是数组中的个数
4.代码如下:
int removeElement(int * nums,int numsSize,int val)
{
int src = 0;
int dst = 0;
while(src<numsSize)
{
//相等
if(nums[src] == val)
{
src++;
}
else
{
nums[dst] = nums[src];
dst++;
src++;
}
return dst;
}