LeetCode27.移除元素
题目
思路
首先,新定义一个数组,用循环将val除外的元素依次赋值到新的数组里,但此时题目要求了必须在原地修改,因此这种方法不适合。
然后我想到了用交换的方法,即把数组中所有的val,交换到数组的最后,用for循环控制数组数组中的元素移动,当元素的值是目标val时,进行替换,此时还要考虑交换之后的这个元素是否还是val,因此做一次i - -;让交换后的元素与val在做一次比较,还要将数组的长度切去一位。
代码
int removeElement(int* nums, int numsSize, int val)
{
int t;
for (int i=0 ; i<numsSize ; i++)
{
if(nums[i]==val) //寻找val的位置
{
t=nums[i]; //将val移到数组最后
nums[i]=nums[numsSize-1]; //把最后的元素移到这
nums[numsSize-1]=t;
i--; //将指针前移,以便再次比较
numsSize--; //切除数组最后一位
}
}
return numsSize;
}
运行结果