用 Python 编写程序查找重复元素并删除它们最后一次出现的位置
pythonserver side programmingprogramming更新于 2026/1/12 18:52:17
假设我们有一个数字列表 A,我们必须找到所有重复的数字并删除它们最后一次出现的位置。
因此,如果输入为 [10, 30, 40, 10, 30, 50],则输出为 [10, 30, 40, 50]
为了解决这个问题,我们将遵循以下步骤 −
- seen:= a new map
- d:= a new map
- for i in range 0 to size of nums, do
- if nums[i] is not in d, then
- d[nums[i]]:= 1
- 否则,
- d[nums[i]] := d[nums[i]] + 1
- if nums[i] is not in d, then
- 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]
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

