【力扣】day1
文章目录
- 27.移除元素
- 26. 删除有序数组的重复项
27.移除元素
26. 删除有序数组的重复项
我们仔细看一下这两道题的最后的返回值,为什么第一题返回slow 而第二题返回slow+1
最后的返回值该如何返回绝对不是凭感觉,我们自己分析一下第一个slow,从0位置开始, 遇到val值就开始和fast配合,若fast是val则无法覆盖,诶?为什么fast是val就不覆盖,不是val才能覆盖
当 fast 指向的值等于 val 时,这个元素是需要被移除的,并非有效元素。如果将其覆盖到 slow 指向的位置,就会破坏已经排列好的有效元素序列,使得数组的前半部分混入了本应移除的元素,无法达成移除元素的目的。
slow 指针的作用是记录不等于 val 的元素应该存放的位置。它就像一个 “记录员”,为不等于 val 的元素指定存放的位置,并且保证这些元素按顺序排列在数组的前面。
所以slow 指针从 0 开始计数,每找到一个不等于 val 的元素,slow 就加 1,所以最终 slow 的值就是不等于 val 的元素的个数,因此直接返回 slow 即可。
而第二题slow 指向最后一个不重复元素的位置,所以返回 slow + 1