O(logn)時間のバイナリ検索ツリーで最小/最大を見つけることができます。しかし、C++のmapは一定時間内に最小値/最大値を与えます。最小要素はmap::begin、最大値はmap::rbeginです。これらの操作はどちらも一定の時間がかかります。誰も最小/最大O(1)を見つける方法を提案できますか?O(1)時間の平衡二分探索時間の最小/最大要素
答えて
C++マップはBSTで実装されていません。 Red Black Treeによって実装されています。 BSTで最小値/最大値をO(1)で検索する場合は、ツリーの一番左のノードと一番右のノードに2つのポインタを格納できます。 それ以外の場合、minheapまたはmaxheapを使用してO(1)のmin/maxを調べることができます。
はい、できます。しかし、最小/最大ノードの削除はポインタを変更します。それは新しい最小値/最大値を見つけるのにO(logn)を使います。 –
いいえ、O(1)で再度実行できます。削除中にminノード(仮定)を削除しても、minノードのinorder successorにminポインタを更新することができます。だから、あなたはいつでもO(1)であなたの分を得ることができます。削除の複雑さが増しているといえます。しかし、それはまだO(logn)になります。 –
レッド・ブラック・ツリーは、バイナリ・サーチ・ツリーでもあり、 – Exagon
- 1. SWIFT 2.2 DatePickerの最小時間と最大時間
- 2. Spring Actuatorカスタムメトリック(平均、最小、最大応答時間)
- 3. 時間ピッカー最小時間
- 4. O(n)時間の複雑さで最小最大ヒープを構築する
- 5. Delphiのdatetimepickerコンポーネントの最小時間と最大時間の設定
- 6. SSAS - セミアディティブメジャーの最大時間
- 7. PostgreSQLの - ログデータを集約 - 最小/最大時間別のセッション
- 8. O(n)時間未満でデータ構造内の要素間の最小の差を得る
- 9. 一定の時間で最小要素を取得する
- 10. O(1)時間で最大ヒープの10番目の要素を見つけよう
- 11. O(n)時間内の最大反復数とO(1)余分なスペースを確認してください
- 12. 最低日時と最大日時の時間差
- 13. PHP「最大実行時間」
- 14. MySQLの最大接続時間(分)最適値
- 15. 平衡二分木の最下位にあるノードの数
- 16. スプレイツリー最悪検索時間
- 17. Elasticsearchの平均最小時間の計算方法は?
- 18. 再帰的探索Big O時間の複雑さ
- 19. 角度Fullcalendar最小時間と最大時間が月間表示で動作しない
- 20. Kerasの時間の経過に伴う最大時間
- 21. グループ、郡別の最小、最大、平均点間距離
- 22. LINQ時間スパンの最大平均を求めるクエリ
- 23. 複数の個人のために最小時間と最大時間を見つける
- 24. 最小セッション時間のデフォルト値
- 25. jspritの合計時間を最小化
- 26. デコード時間が最小のビデオフォーマット
- 27. clockpickerの最小時間、最大時間、および表示ボタンイメージを制限する方法は?
- 28. マスクされたテキストボックス、最大24時間(時間):60(分)のコントロールで時間形式を使用
- 29. Javaの最小値、最大値、中間値の検索
- 30. arrylist要素の最大/最小値の検索
ルートと共に2つのポインタをさらに格納します。 – molbdnilo
std :: mapは通常、検索ツリーで実装されています。つまり、ハッシュマップを使って実装されたstd :: unordered_mapです。ハッシュマップは順序を気にしないので、O(1)でminを見つけることはできません。削除しないでO(1)のmin/maxを取得したいときは、min-heapまたはmax-heapをお勧めします。 – Exagon
@Exagon:ordered_mapを意味します。 map :: rbeginとmap :: beginを見ることができます。 –