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
- 如果 nums[i] 不在 d 中,则
- 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]
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP