PHP でデータ ストリーム内の K 番目に大きい要素を計算する方法
最小ヒープのプロパティを使用すると、最小ヒープのルート ノードはすべてのノードの中で最小でなければなりません。したがって、サイズ K 要素の最小ヒープを維持するだけで済みます。値が最小ヒープのルート ノードの値より大きい限り、ルート ノードの値が削除され、その値が最小ヒープに挿入されます。
#データ ストリーム内で K 番目に大きい要素を検索するクラスを設計します。これは並べ替え後の K 番目に大きい要素であり、K 番目の異なる要素ではないことに注意してください。
KthLargest クラスには、整数 k と、データ ストリームの初期要素を含む整数配列 nums の両方を受け入れるコンストラクターが必要です。 KthLargest.add が呼び出されるたびに、現在のデータ ストリーム内の K 番目に大きい要素が返されます。
例:
int k = 3; int[] arr = [4,5,8,2]; KthLargest kthLargest = new KthLargest(3, arr); kthLargest.add(3); // returns 4 kthLargest.add(5); // returns 5 kthLargest.add(10); // returns 5 kthLargest.add(9); // returns 8 kthLargest.add(4); // returns 8
説明: nums ≥ k-1 および k ≥ 1 の長さと仮定できます。
質問の意味を理解する
この質問は最初理解できませんでしたが、何度か読んで理解できました。k は指定されたものです最も基本的な考慮事項は、各加算には並べ替えが必要であり、その後 k- の値を再検索する必要があるということです。フラッシュバック後は 6. 5, 3, 2、k = 2 の場合は 5 が返され、加算の場合は 1 が返されます。は最後に追加されますが結果には影響しませんが、add 7 の場合は先頭に追加され、戻り値は 6 になります。
問題解決のアイデア
最小ヒープを直接使用します。占有スペースを最小限に抑えるため、ヒープのサイズは k です。 minimum heap は最小値であり、これも望ましい結果です。 PHP の SPL 標準ライブラリには、コード内で SplMinHeap を直接継承する最小ヒープ ライブラリがあります。
PHP 実装
class KthLargest extends SplMinHeap { /** * @param Integer $k * @param Integer[] $nums */ static $nums; public $k; function __construct($k, $nums) { $this->k = $k; // 遍历初始化数组,分别插入堆中 foreach ($nums as $v) { $this->add($v); } } /** * @param Integer $val * @return Integer */ function add($val) { // 维持堆的大小为k,当堆还未满时,插入数据。 if ($this->count() < $this->k) { $this->insert($val); } elseif ($this->top() < $val) { // 当堆满的时候,比较要插入元素和堆顶元素大小。大于堆顶的插入。堆顶移除。 $this->extract(); $this->insert($val); } return $this->top(); }} /** * Your KthLargest object will be instantiated and called as such: * $obj = KthLargest($k, $nums); * $ret_1 = $obj->add($val); */
推奨学習: php ビデオ チュートリアル
以上がPHP でデータ ストリーム内の K 番目に大きい要素を計算する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています
