【数组】移除元素

做题时思路:双指针解决(也是官方最优解)

  1. 设立快慢指针。slow和fast均指向数组第一个元素
  2. 遍历数组,判断fast指针指向的是否是要删除的数字:
    1. 若是,则fast指针+1
    2. 若不是,则将fast指针指向的元素赋给slow,slow指针+1。numsSzie-1
  3. 最后返回slow,slow为数组中元素个数
int removeElement(int* nums, int numsSize, int val){
    int slow = 0;
    for(int fast = 0; fast < numsSize; fast++) {
				//若快指针位置的元素不等于要删除的元素
        if(nums[fast] != val) {
						//将其挪到慢指针指向的位置,慢指针+1
            nums[slow++] = nums[fast];
        } 
    }
		//最后慢指针的大小就是新的数组的大小
    return slow;
}