push_rear(), pop_front(), get_min() がすべて定数時間操作となる待ち行列を実装する。
質問
こんな質問を見かけました。 push_rear()、pop_front()、get_min()がすべて定数時間の処理であるキューを実装してください。
私は最初、get_min()のためにO(1)の複雑さを持つmin-heapデータ構造を使用することを考えました。しかし、push_rear() と pop_front() は O(log(n)) となるでしょう。
O(1) push()、pop()、min()を持つそのようなキューを実装する最良の方法は何か、誰か知っていますか?
私はこのことについてググって、これを指摘したいと思いました。 Algorithm Geeks スレッド . しかし、どの解決策も3つのメソッド(push()、pop()、min())すべてにおいて一定時間のルールに従わないようです。
すべての提案に感謝します。
どのように解決するのですか?
O(1) pop()、push()、get_min()でスタックを実装することができます。は、各要素と一緒に現在の最小値を格納するだけです。つまり、例えばスタック
[4,2,5,1]
(1 が一番上) は次のようになります。
[(4,4), (2,2), (5,2), (1,1)]
.
次に は2つのスタックを使ってキューを実装します。 . 1つのスタックにプッシュし、もう1つのスタックからポップします。ポップ中に2番目のスタックが空になった場合、最初のスタックから2番目のスタックにすべての要素を移動させます。
例えば
pop
リクエストの場合、最初のスタックからすべての要素を移動して
[(4,4), (2,2), (5,2), (1,1)]
に移動し、2 番目のスタックには
[(1,1), (5,1), (2,1), (4,1)]
となり、2つ目のスタックから一番上の要素を返します。
キューの最小要素を見つけるには、個々の min-stacks の最小の 2 つの要素を調べ、その 2 つの値の最小値を取ります。 (もちろん、スタックの1つが空の場合、ここでいくつかの余分なロジックがありますが、それは回避するのがそれほど難しくありません)。
これは O(1)
get_min()
と
push()
であり、償却済みO(1)
pop()
.
関連
-
[解決済み] 線形時間でのソート?[クローズド]
-
[解決済み] 簡単な面接問題が難しくなった:1~100の数字が与えられたとき、ちょうどk個の数字が欠けていることを見つけなさい。
-
[解決済み] JavaScriptでStackとQueueを実装するには?
-
[解決済み] 償却期間一定
-
[解決済み】リンクリストのループを検出する方法は?
-
[解決済み] 3つのスタックを持つ待ち行列を実装するには?
-
[解決済み] アルゴリズム設計マニュアル』の解答はどこにあるのですか?[クローズド]
-
[解決済み] ビット単位で、モジュラス演算子の代わりに使用
-
[解決済み] Dijkstraのアルゴリズムはなぜdecrease-keyを使うのですか?
-
[解決済み] ダイクストラアルゴリズムの時間複雑性計算の理解
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】クイックソートとヒープソートの比較
-
[解決済み] ポイントルック アット ポイント
-
[解決済み] どのようにすれば、ほとんどすべてのアルゴリズムを修正して、最良の場合の実行時間を持つようにできるか?
-
[解決済み] グラフにおいて最小容量が最大となる経路の探索
-
[解決済み] Bogosort (a.k.a Monkey Sort)よりも悪いソートアルゴリズムはあるのか?[クローズド]
-
[解決済み] は、「減少しない」列が「増加する」のか?
-
[解決済み] k-meansの時間計算量はどの程度ですか?
-
[解決済み] T = {<M> | Mはwを受け入れるときはいつでも$w^R$を受け入れるTMである}とする。Tが決定不可能であることを示せ
-
[解決済み] 最小ボトルネックスパニングツリーと最小スパニングツリーはどう違うのですか?
-
[解決済み] 擬似多項式時間とは何ですか?多項式時間とどう違うのですか?