Python 程式:查詢重複元素並刪除其最後一次出現


假設我們有一個數字列表 A,我們需要找到所有重複的數字並刪除其最後一次出現。

因此,如果輸入類似於 [10, 30, 40, 10, 30, 50],則輸出將為 [10, 30, 40, 50]

為了解決這個問題,我們將遵循以下步驟:

  • seen := 一個新的對映
  • d := 一個新的對映
  • 從 0 到 nums 大小迴圈,執行以下操作:
    • 如果 nums[i] 不在 d 中,則
      • d[nums[i]] := 1
    • 否則,
      • d[nums[i]] := d[nums[i]] + 1
  • i := 0
  • 當 i < nums 大小,執行以下操作:
    • n := d[nums[i]]
    • 如果 nums[i] 不在 seen 中,則
      • seen[nums[i]] := 1
    • 否則,
      • seen[nums[i]] := seen[nums[i]] + 1
    • 如果 n 等於 seen[nums[i]] 且 n > 1,則
      • 從 nums 中刪除第 i 個元素
      • i := i - 1
    • i := i + 1
  • 返回 nums

讓我們看看下面的實現以更好地理解:

示例

 線上演示

class Solution:
   def solve(self, nums):
      seen={}
      d={}
      for i in range(len(nums)):
         if not nums[i] in d:
            d[nums[i]]=1
         else:
            d[nums[i]]+=1
      i=0
      while i < len(nums):
         n=d[nums[i]]
         if not nums[i] in seen:
            seen[nums[i]]=1
         else:
            seen[nums[i]]+=1
         if n == seen[nums[i]] and n > 1:
            nums.pop(i)
         i-=1
         i+=1
      return nums
ob = Solution()
print(ob.solve([10, 30, 40, 10, 30, 50]))

輸入

[10, 30, 40, 10, 30, 50]

輸出

[10, 30, 40, 50]

更新於: 2020-10-07

307 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.