假设我们有一个数字A的列表,我们必须找到所有重复的数字并删除它们的最后出现次数。
因此,如果输入类似于[10,30,40,10,30,50],则输出将为[10,30,40,50]
为了解决这个问题,我们将遵循以下步骤-
看过:=新映射
d:=新映射
对于范围从0到nums的i,执行
d [nums [i]]:= d [nums [i]] + 1
d [nums [i]]:= 1
如果nums [i]不在d中,则
除此以外,
i:= 0
当我<nums的大小,
从nums中删除第i个元素
我:=我-1
seen [nums [i]]:= seen [nums [i]] + 1
seen [nums [i]]:= 1
n:= d [nums [i]]
如果没有看到nums [i],则
除此以外,
如果n与see [nums [i]]相同且n> 1,则
我:=我+ 1
返回数字
让我们看下面的实现以更好地理解-
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]