假设我们有一个数字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]