题目:

解法:
双指针思想,运用快慢指针解决问题
数组中的元素是连续不间断的,因此移除元素,其实是被移除元素的下一个元素覆盖掉被移除元素,我们可以用一个快指针(fast)遍历这个数组,寻找我们新数组的值,如果原数组中的元素不等于val,则将快指针寻找到的数赋值给慢指针(slow的值对应新数组新存入元素下标),由慢指针存入新数组,直到快指针所指元素等于val,跳过该数,继续遍历。最终新数组中的元素个数其实就是slow的值(每存入一个数,slow++)
java
class Solution {
public int removeElement(int[] nums, int val) {
int slow = 0;
for(int fast = 0;fast < nums.length;fast++){
if(nums[fast] != val){
nums[slow++] = nums[fast];
}
}
return slow;
}
}