私は未知のサイズの整数の連続入力があります。任意の瞬時に、k要素を入力として受け取ったとき、私はサイズkのヒープを持っていたいと思います。あらかじめある長さの配列を初期化せずにこれをどうすれば実現できますか?事前に入力のサイズを知らなくてもヒープを実装できますか?
0
A
答えて
1
バイナリツリーベースのヒープの場合。サイズに関する制限を知る必要はありません。
http://interactivepython.org/runestone/static/pythonds/Trees/BinaryHeapImplementation.html
容量が不足した場合でも、アレイベースの実装では、割り当てられたサイズのトリックの倍増を使用することができます。それは同じ時間の複雑さを持つでしょう。
0
java.util.PriorityQueue
の基礎となるデータ構造はヒープです。私はあなたのデータに注文機能を持たせようとしていたヒープについて言及しています。
デフォルトのコンストラクタを使用してPriorityQueue
を初期化すると、デフォルトの初期容量(11)を持つPriorityQueue
が作成され、自然順序付けに従って要素が順序付けられます。カスタムComparator
を定義すると、それはあなたの制約に従って注文します。
ArrayList
のような他の動的サイズのデータ構造では、自分自身をソートしない限りソート順の機能は提供されません。
実行ストリームのk番目に小さい/最大の要素に似た何かを解決したいと思います。はいの場合は、デフォルトコンストラクタでPriorityQueue
を初期化し、現在のサイズがk
であるかどうかを各要素チェックで確認できます。現在のサイズがk
の場合は、制約に従って新しい要素で先頭の要素を置き換えます。
最後に、動的サイズのみが必要な場合はArrayList
を使用し、ヒープのような注文は必要ありません。
関連する問題
- 1. OpenCL:ローカルワークグループのサイズを事前に知っていますか?
- 2. 前回のコミットを知らなくてもdiffを使用できますか?
- 3. Pythonのsocket.socketインスタンスが事前に知らなくても、サーバーかクライアントかを検出しますか?
- 4. Pythonシェルにいくつかの事前入力ができますか?
- 5. サイズを知らずに配列に入力できますか? (C)
- 6. 入力画像のサイズが大きいCaffe事前学習モデル
- 7. タイプを知らなくても印刷できますか?
- 8. データベースのデータをフォームに事前に入力できません。
- 9. データ入力フォームにデータを事前入力する(acFormAddとして開く)
- 10. Google Appsスクリプトから事前にGoogleフォームを入力してください
- 11. ローカライズされた名前を事前に知らなくても、どのようにWindowsセキュリティグループで作業できますか?
- 12. EclipseとPydevの新機能をdocstringと「実装されていない」例外で事前入力する
- 13. データをデータベースで事前入力してください
- 14. jsonの仕事を使用してphpフィールドを事前入力しますか?
- 15. サイズを知らずにMatlabのスペースを事前に割り当てていますか?
- 16. テキストボックスフィールドにテキストを事前入力する
- 17. 事前シリアル化メッセージオブジェクト - 実装?
- 18. ブートストラップモーダルフォームから事前入力済みのコンテンツを削除する
- 19. PHPサイトの事前入力
- 20. WebViewテキストフィールドの事前入力
- 21. 誰もsed -iの実装を知っていますか?
- 22. データベースから情報を事前に入力
- 23. エディタが事前に入力されていないのはなぜですか?
- 24. ヒープを実装する
- 25. Min-MaxヒープのJava実装ですか?
- 26. Abstract未知のサイズを持つスプリッタの実装はOutOfMemoryErrorをスローします:Javaヒープ領域
- 27. Hibernateのデザイン時にフィールドを知らなくてもORMを実行できますか?
- 28. セマンティックUIで入力テキストを事前入力する
- 29. 明示的にキーを記述しなくても、事前入力済みの暗号化レルムファイルを使用できますか?
- 30. 外部HTMLフォームを事前に入力しますか?
java.util.ArrayListは、項目の数が増えるにつれて、バッキング配列を再割り当てしています。 – rkosegi