以下是一个使用优先队列来按优先级删除重复项的示例代码:
import heapq
def remove_duplicates(nums):
heap = []
seen = set()
for num in nums:
if num not in seen:
heapq.heappush(heap, num)
seen.add(num)
result = []
while heap:
result.append(heapq.heappop(heap))
return result
# 示例用法
nums = [1, 3, 2, 2, 4, 3, 5, 5, 6]
result = remove_duplicates(nums)
print(result)
输出结果为:[1, 2, 3, 4, 5, 6]
在这个示例中,我们使用了一个优先队列(堆)来维护元素的优先级。我们遍历输入列表中的每个元素,如果元素不在seen
集合中,则将其加入堆中,并将其添加到seen
集合中以标记为已访问。最后,我们将堆中的元素按优先级弹出,并将它们添加到结果列表中。这样就能够按优先级删除重复项,返回一个没有重复项的有序列表。