給定一個排序數組,你需要在原地刪除重復出現的元素,使得每個元素只出現一次,返回移除后數組的新長度。


我想了兩個方法。

第一個

是使用一個指針,因為是有序的,只需要從頭移動到尾部,如果發現下一個元素與當前元素相等,則移動當前元素之后的元素,把相同的元素覆蓋掉。

大致的步驟如下

第二個

是使用兩個指針,一個快(j)一個慢(i),如果i j 所指向的元素不相等,則i j 同時加一,如果相等,則將j向后移動直到兩者所指向的元素不相等。

上一步就相當於確定了移動的步伐,下一步就是移動了。

大致步驟如下

 

方法二比起方法一來說移動的次數會更加少一點。

具體代碼請查看我的GitHub


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 給定一個排序數組,你需要在 原地 刪除重復出現的元素,使得每個元素只出現一次,返回移除后數組的新長度。 給定一個排序數組,你需要在原地刪除重復出現的元素 刪除排序數組中的重復項和移除元素以及只出現一次的數字(java實現) 給定一個非空整數數組,除了某個元素只出現一次以外,其余每個元素均出現兩次。找出那個只出現了一次的元素。 位運算-異或運算-只出現一次的數字-給定一個非空整數數組,除了某個元素只出現一次以外,其余每個元素均出現兩次。找出那個只出現了一次的元素 給定一個數組 nums 和一個值 val,你需要原地移除所有數值等於 val 的元素,返回移除后數組的新長度,不要使用額外的數組空間,你必須在原地修改輸入數組並在使用 O(1) 額外空間的條件下完成。 Leetcode練習(Python):哈希表類:第136題:給定一個非空整數數組,除了某個元素只出現一次以外,其余每個元素均出現兩次。找出那個只出現了一次的元素。 給定一個整數數組 nums,其中恰好有兩個元素只出現一次,其余所有元素均出現兩次。 找出只出現一次的那兩個元素。 對於一個有序數組,我們通常采用二分查找的方式來定位某一元素,請編寫二分查找的算法,在數組中查找指定元素。 給定一個整數數組A及它的大小n,同時給定要查找的元素val,請返回它在數組中的位置(從0開始),若不存在該元素,返回-1。若該元素出現多次,請返回第一次出現的位置。 Leetcode練習(Python):第448題:找到所有數組中消失的數字:給定一個范圍在 1 ≤ a[i] ≤ n ( n = 數組大小 ) 的 整型數組,數組中的元素一些出現了兩次,另一些只出現一次。
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM