Python 中從已經排序的陣列中移除重複元素


假設我們有一個已排序的列表 A。我們需要返回移除所有重複項後陣列的長度。我們必須在 O(1) 的額外空間內執行此操作。因此,我們必須在原地操作。

例如,假設 A = [1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 5, 5, 5, 6],則輸出為 6,因為有六個不同的元素。

要解決此問題,請遵循以下步驟 -

  • 如果列表為空,則返回 0
  • 否則,最初 take prev = A 的第一個元素。定義 length = 0
  • 對於 i := 1 到 n-1,執行
    • 如果 A[i] 與 prev 不同,則
      • length := length + 1
      • prev := A[i]
  • 返回 length

讓我們看一下實現,以便更好地理解

示例(Python)

 線上演示

class Solution(object):
   def removeDuplicates(self, nums):
      """
      :type nums: List[int]
      :rtype: int
      """
      if len(nums) == 0:
         return 0
      length = 1
      previous = nums[0]
      index = 1
      for i in range(1,len(nums)):
         if nums[i] != previous:
            length += 1
            previous = nums[i]
            nums[index] = nums[i]
            index+=1
      return length
input_list = [1,1,2,2,2,3,3,3,3,4,5,5,5,6]
ob1 = Solution()
print(ob1.removeDuplicates(input_list))

輸入

[1,1,2,2,2,3,3,3,3,4,5,5,5,6]

輸出

6

更新於:2020 年 4 月 28 日

4K+ 瀏覽量

啟動你的 職業生涯

透過完成課程獲得認證

開始使用
廣告
© . All rights reserved.