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 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告