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]
广告