Pythonでは、優先度付きキューはheapq
という標準ライブラリで提供されています。このライブラリを使用すると、データの挿入と最小値の取得がそれぞれ$O(\log N)$で可能となります。
しかし、heapq
は最小値しか取り出すことができません。そこで、最大値を取り出すためには、各要素に-1をかけた上で最小値を取り出すという方法があります。
以下に、Pythonで優先度付きキューを使って最大値を取得するコードの例を示します。
import heapq
# 元のリスト
a = [1, 6, 8, 0, -1]
# 各要素を-1倍
a = list(map(lambda x: x*(-1), a))
# リストを優先度付きキューに変換
heapq.heapify(a)
# 最大値の取り出し(-1をかけて元の値に戻す)
print(heapq.heappop(a)*(-1))
このコードでは、まず元のリストの各要素を-1倍しています。その後、heapify
関数を使ってリストを優先度付きキューに変換し、heappop
関数を使って最小値(-1倍した後なので元の値では最大値)を取り出しています。
以上が、Pythonで優先度付きキューを使って最大値を取得する方法です。この方法を覚えておくと、データの挿入と最大値の取得を効率的に行うことができます。