これまでに挿入された最大のアイテムを常にn
(順不同で) 保持するデータ構造が必要です。
したがって、n
が 3 の場合、いくつかの数字を挿入すると、コンテナーの内容が変更される次のセッションを作成できます。
[] // now insert 1
[1] // now insert 0
[1,0] // now insert 4
[1,0,4] // now insert 3
[1,4,3] // now insert 0
[1,4,3] // now insert 3
[4,3,3]
あなたはアイデアを得る。データ構造の名前は何ですか? これを実装する最良の方法は何ですか? それとも、これはいくつかのライブラリにありますか?
priority_queue
逆比較を使用pop
するため、最小の要素を削除する要素 (委任)を持つコンテナーを使用することを考えています。そのため、insert
関数は最初に、挿入される新しい要素が最小の要素よりも大きいかどうかを確認します。もしそうなら、その最小のものを捨てて、新しい要素をプッシュします。
(私はC++
実装を念頭に置いていますが、それでも問題は言語に依存しません。)