O(1)の集合に特定の整数が存在するかどうかを判断できるデータ構造を記述する必要がある)期待時間とO(logn)最悪の場合もO(n)スペースを消費します。 iveは共通のデータ構造を含んでいるテーブルを見ていましたが、大きな時間/空間の複雑さがありましたが、これらの要件を満たすものはどれも見つかると思われますか?これらの要件に合わせてBSTを変更する方法はありますか?O(1)期待値とO(logn)最悪ケースの集合に整数が存在するかどうかを調べる
答えて
@Carcigenicateがコメントしたように、ハッシュマップは必要な動作を示します。衝突の場合を除いて、一定の参照時間がO(1)
になります。衝突の場合、ハッシュマップは通常、指定されたバケットの項目のリストを作成します。最悪の場合のシナリオでは、ハッシュマップはリストのように動作します。しかしこれは最悪の場合の検索時間がO(n)
であることを意味しますが、それはあなたの要求に合っていません。
Javaは最新の8バージョンでは、同じバケットと衝突するアイテムを格納するリストの代わりにバランスの取れたツリーを使用するHashMap
クラスを公開しました。これにより、最悪の場合の検索時間がO(logn)
になります。
したがって、問題を解決するには、衝突のためにツリーを使用するようにハッシュマップの実装を変更する必要があります。 Java 8を使用している場合、人生は既に良いですし、ちょうどHashMap
で実行することができます。
ahhリンクされたリストを持つ代わりに、単にツリーのためにスイッチするだけですか? – 101ldaniels
@ 101ldanielsはい、これを行い、結果のハッシュマップは必要なものと同じように動作するはずです。 –
あなたのキーが 'Comparable'を実装している場合にのみ 'O(log n)'が適用されると思います。そうでなければ 'O(n)'に縮退します。 – TilmannZ
- 1. O(LogN)== O(3LogN)ですか?
- 2. O(N)Oまで(LOGN)
- 3. ListBox.FindString最悪の場合のランタイムは何ですか? O(n)、O(n log n)、O(1)?
- 4. 値が存在するかどうかを調べるfirebase
- 5. なぜO(n * logn)ではなくTreeSet Iteration O(n)ですか?
- 6. 整数が別の整数に存在するかどうかを調べる方法
- 7. 3つの要素の値の間に整数が存在するかどうかを調べる
- 8. BIg O表記:n * logn
- 9. C#フラクショナルナップザックo(n logn)解
- 10. バイナリI/Oクラス(バイナリデータファイルのすべての整数を集計)
- 11. mysqlユーザが期間内に存在するかどうかを調べる(ヌルが存在する場所)
- 12. アクションスクリプトにアイテムが存在するかどうかを調べる
- 13. クラスがUIWebViewに存在するかどうかを調べる
- 14. ボタンがJavaに存在するかどうかを調べる
- 15. テーブルにデータベースが存在するかどうかを調べる
- 16. データベースにテーブルが存在するかどうかを調べる
- 17. Java MySQLがデータベースに値が存在するかどうかを調べる
- 18. Djangoのデータベースに値が存在するかどうかを調べる
- 19. なぜヒープのdeleteMinにO(logn)が必要ですか?
- 20. lognがO(2^sqrt(logn))であることを証明してください。
- 21. Pytablesが列が存在するかどうかを調べる
- 22. フォルダが存在するかどうかをPythonが調べる
- 23. mongodb配列に値が存在するかどうかを調べる
- 24. 配列に値が存在するかどうかを調べる
- 25. 配列に値が存在するかどうかを調べるwhileループwhile
- 26. O(1)ルックアップで.NET集合コレクション?
- 27. VB2010数値が整数であるかどうかを調べるには
- 28. すべてのn、O(1)がO(n)よりも速い場合、O(1)上でO(n)を選択しますか?
- 29. VimL:機能が存在するかどうかを調べる
- 30. Duplicatesが存在するかどうかを調べるSML NJ
これは、ハッシュマップ/セットを記述します。 – Carcigenicate
最悪のケースはハッシュマップのO(n)/セットではないO(logn)@Carcigenicate – 101ldaniels