k = [3,2,6,4,9]
q = PriorityQueue()
for idx in range(len(k)):
# We are putting a tuple to queue - (priority, value)
q.put((-1*k[idx], idx))
# To print the max priority element, just call the get()
# get() will return tuple, so you need to extract the 2nd element
print(q.get()[1]
5条答案
按热度按时间db2dz4w81#
PriorityQueue默认只支持minheaps。
用它实现max_heaps的一种方法可能是,
字符串
qyzbxkaa2#
是的,有可能。
假设你有一个列表:
字符串
现在,假设您希望首先打印出max元素(或任何其他具有最大优先级的元素)。然后逻辑是通过将优先级乘以
-1
来反转优先级,然后使用支持最小优先级队列的PriorityQueue
类对象使其成为最大优先级队列。举例来说:
型
注:Python中的库是
queue.PriorityQueue
ttvkxqim3#
根据注解,获取maxHeap的最简单方法是插入元素的负数。
字符串
moiiocjp4#
反转键的值并使用heapq。例如,将1000.0变为-1000.0,将5.0变为-5.0。
字符串
s3fp2yjn5#
@Kusharga在上面有一个优雅的回答。为了遵守优先级队列中元素的(priority,value)结构, Package 器类可以修改如下:
字符串