192日-プログラマ
4308 ワード
問題の説明
デュアル・ユーティリティ・プリアンブル・キューとは、次の演算が可能なデータ構造です.
めいれいじゅしんとう
I数値キューに指定した数値を挿入します.
D 1キューから最値を削除します.
D-1キューから最大値を削除します.
パラメータとして2つの優先順位キューで実行する演算操作を指定した場合、すべての演算を処理した後、キューが空の場合[0,0]空でない場合、「最値、最上昇値」を返すソルバを実装します.
せいげんじょうけん
operationsは、長さが1または1000000未満の文字列配列です.
operationsの要素は、キューが実行する演算を表します.
要素はコマンドデータ形式で与えられます.最大値/最大値を削除する操作で複数の最大値/最大値がある場合は、1つだけ削除します.
空のキューからデータを削除する必要がある場合は、この操作は無視されます.
I/O例
operations return
["I 16","D 1"][0,0]
["I 7","I 5","I -5","D -1"][7,5]
I/O例説明
16を挿入すると、最大値が削除されます.[0,0]を返します.空ですから.
7、5、および-5を挿入して、最大値を削除します.最大値7、最小値5を返します.
デュアル・ユーティリティ・プリアンブル・キューとは、次の演算が可能なデータ構造です.
めいれいじゅしんとう
I数値キューに指定した数値を挿入します.
D 1キューから最値を削除します.
D-1キューから最大値を削除します.
パラメータとして2つの優先順位キューで実行する演算操作を指定した場合、すべての演算を処理した後、キューが空の場合[0,0]空でない場合、「最値、最上昇値」を返すソルバを実装します.
せいげんじょうけん
operationsは、長さが1または1000000未満の文字列配列です.
operationsの要素は、キューが実行する演算を表します.
要素はコマンドデータ形式で与えられます.最大値/最大値を削除する操作で複数の最大値/最大値がある場合は、1つだけ削除します.
空のキューからデータを削除する必要がある場合は、この操作は無視されます.
I/O例
operations return
["I 16","D 1"][0,0]
["I 7","I 5","I -5","D -1"][7,5]
I/O例説明
16を挿入すると、最大値が削除されます.[0,0]を返します.空ですから.
7、5、および-5を挿入して、最大値を削除します.最大値7、最小値5を返します.
import heapq
def solution(operations):
h = []
for item in operations:
if item.split(' ')[0] == 'I':
heapq.heappush(h, int(item.split(' ')[1]))
else:
if h:
if item.split(' ')[1] == '1':
h.pop()
else:
heapq.heappop(h)
h.sort()
if not h:
return [0,0]
else:
return [h.pop(), h.pop(0)]
Reference
この問題について(192日-プログラマ), 我々は、より多くの情報をここで見つけました https://velog.io/@vivala0519/192일차-프로그래머스-이중우선순위큐テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol