Leecode 26. 刪除排序數組中的重複項

在這裏插入圖片描述在這裏插入圖片描述

解法

雙指針

因爲數組已經排序,在數組中放置 ij 兩個指針,且i在j的左邊
i爲慢指針j爲快指針。
進行判斷:

  • 當nums[i]==nums[j]時,j指針向後移動一位,i不變
  • 當nums[i]!=nums[j]時,i指針向後移動一位,得到新的nums[i]=nums[j],之後j指針向後移動一位

最後返回的就是i+1表示移除後數組的新長度

代碼實現

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        i, j = 0, 1
        while j < len(nums):
            if nums[j] > nums[i]:
                i += 1
                nums[i] = nums[j]
            j += 1
        return i+1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章