【Leetcode 26】刪除排序數組中的重複項

題目描述

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

解題思路

本題的目的是返回不重複數組的長度,並且代碼能夠展示出原來的數組長度不變,前n個數是不重複的數,後幾個數與原數組對應的位置數值保持一致

解法一:雙指針法

對排序後的列表,首先放置兩個相鄰的指針 iijj ,其中 ii 是慢指針,jj 是快指針:

  • 如果nums[i] == nums[j],則讓 jj 跳過重複項
  • 如果nums[i] != nums[j],則nums[j]的值賦值給nums[i+1],再遞增 iijj,直到列表的末尾,返回不重複數組的長度

python代碼

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