image.png
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];
slow++;
}
}
return slow;
}
- 思路
双指针解法, 一开始让slow和fast都指向数组索引0
开始循环遍历, 判断 nums[fast] 指向的数值!=
要删除的元素, 则让nums[fast]的值 覆盖 nums[slow]的值, 两个指针同时向前移动, 当nums[fast]的值 = target时, 让fast跳过, 不给slow赋值,这样相当于跳过了要删除的target, 当fast遍历结束试, nums中剩下的数值就都是过滤掉target的数组, slow的大小就是移除元素后的数组大小.