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. Delphiのdatetimepickerコンポーネントの最小時間と最大時間の設定
- 4. SSAS - セミアディティブメジャーの最大時間
- 5. PostgreSQLの - ログデータを集約 - 最小/最大時間別のセッション
- 6. O(n)時間未満でデータ構造内の要素間の最小の差を得る
- 7. 一定の時間で最小要素を取得する
- 8. O(n)時間内の最大反復数とO(1)余分なスペースを確認してください
- 9. 平衡二分木の最下位にあるノードの数
- 10. MySQLの最大接続時間(分)最適値
- 11. PHP「最大実行時間」
- 12. 再帰的探索Big O時間の複雑さ
- 13. Kerasの時間の経過に伴う最大時間
- 14. LINQ時間スパンの最大平均を求めるクエリ
- 15. 複数の個人のために最小時間と最大時間を見つける
- 16. clockpickerの最小時間、最大時間、および表示ボタンイメージを制限する方法は?
- 17. デコード時間が最小のビデオフォーマット
- 18. 最小セッション時間のデフォルト値
- 19. マスクされたテキストボックス、最大24時間(時間):60(分)のコントロールで時間形式を使用
- 20. Javaの最小値、最大値、中間値の検索
- 21. Selenium Webdriverテストの最大継続時間
- 22. wampサーバーの最大実行時間エラー
- 23. 辞書項目のリストの最小要素と最大要素の検索
- 24. 時間限定ビデオ録画:カメラアプリで最大時間を表示
- 25. 最大ジョブ時間を持つスケジュール時間表。
- 26. PHPをPythonに翻訳する:識別子ごとに最小時間と最大時間を見つける
- 27. ポインターを悩まさずに、バランスのとれたバイナリ検索ツリーでO(1)時間を最小と最大に保つ方法は?
- 28. 実行時間の分析、Big O
- 29. Windows Phone 7スプラッシュ画面最小時間
- 30. 日付と最小時間でソートR
ルートと共に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を見ることができます。 –