移除元素
题目
分析题目
具体思路
思路一:挪动数据
这种思路为大家最容易想到的思路,也是较复杂的一种思路,具体代码如下:
但通过具体的代码分析得知:
不符合题目的要求,故行不通。
思路二:运用指针将不是val的都放到一个新的数组中
分析如下,可知依旧不符合题目要求:
思路三:运用双指针
经分析可见此方法可以依据题意合理完成,代码实现:
int removeElement(int* nums, int numsSize, int val){
int src = 0,dst = 0;
while(src < numsSize)
{
if(nums[src] == val)
{
src++;
}
else
{
nums[dst] = nums[src];
src++;
dst++;
}
}
return dst;
}