题目链接:
从这个题里,题目让我们移除元素,其实这里有一个很简单的思想,双指针,定义两个指针,一个left和一个right,right指针用来遍历数组中的每个元素(也就是循环每走一次right就++),left指针用来控制交换,它的增加是有条件的,每一次交换left才增加一次。交换的条件就是每次right指向的元素的值和left指向的元素的值不同时,二者才交换。代码如下:
int removeElement(int* nums, int numsSize, int val){
int left = 0; //定义一个left指针,用来控制交换,顺便返回移除后数组的新长度
int right = 0; //定义一个right指针
while(right < numsSize) //当right的值小于numsSize时,执行循环一次
{
if(nums[right] != val) //如果right指向的值和left指向的值不同时就会交换
{
int tmp = nums[left];
nums[left] = nums[right];
nums[right] = tmp;
left++; //换完了之后left指针增加1
}
right++; //right指针是跟着循环增加的
}
return left;
}