文章目錄
- 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