- 快指针:寻找新数组中共所需要的元素,即删除目标值之后的元素,就是我们新数组所需要的元素。快指针指向的是我们新数组所需要的元素,获取到新数组所需要的元素之后,与要给他放到新数组中。新数组的下标值就是slow.
- 慢指针:需要更新的下标,快指针获取到的值赋给慢指针就可以了。
快指针和慢指针其实都是在一个数组上进行操作。什么时候进行赋值呢?
快指针所指向的元素不等于要查找的元素的时候,将快指针所对应的值赋给新数组所对应的下标的位置,即numbers[slow] = numbers[fast];
赋值完之后慢指针应该向后移动一个位置,慢指针做一个++的操作,即slow++;
numbers[fastIndex] != val;
只有当元素不等于我们要查找的这个元素val,才是我们新数组所需要的元素。
slow = 0;
for(fast = 0;fast <= numbers.size;fast ++){
if(numbers[fast] != val){
numbers[slow] = numbers[fast];
slow++;
}
}
return slow;
当遍历到的元素不是我们新数组中共所需要的元素的时候if里面的更新操作就不要执行了,就不需要按更新新数组中的元素了,慢指针就不要再往前移动了,直到for循环执行结束,那么此时slow指向的下标就是新数组的大小.