php資料流中第K大元素的計算方法
設計一個找到資料流中第K大元素的類(class)。注意是排序後的第K大元素,不是第K個不同的元素。
計算方法
1、直接使用最小堆,堆的大小為 k,這樣保證空間佔用最小,最小堆的根節點是就是最小值,也是我們想要的結果。
2、php的spl標準庫是有最小堆這個庫,直接在程式碼中繼承SplMinHeap。
例項
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資料流中第K大元素的計算方法,希望對大家有所幫助。更多php學習指路:
本文轉載於php中文網,如有侵犯聯絡作者修改。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2236/viewspace-2828951/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 尋找陣列中第K大的元素陣列
- 查詢陣列中第K大的元素陣列
- java Count如何計算流中的元素Java
- 第k大元素
- 陣列中的第K個最大元素陣列
- 獲取一個陣列裡面第K大的元素陣列
- 215. 陣列中的第K個最大元素陣列
- 大資料開發實戰:實時資料平臺和流計算大資料
- TopK問題,陣列中第K大(小)個元素問題總結TopK陣列
- LeetCode-215-陣列中的第K個最大元素LeetCode陣列
- PHP從陣列中刪除元素的方法PHP陣列
- 大資料計算生態之資料計算(二)大資料
- 大資料計算生態之資料計算(一)大資料
- 大資料計算的基石——MapReduce大資料
- TLP元素與PCIE資料流
- PHP中的資料庫連線方法PHP資料庫
- 力扣-215. 陣列中的第K個最大元素力扣陣列
- 230. 二叉搜尋樹中第 K 小的元素
- 【計算機組成原理】第6章 計算機的運算方法計算機
- LeetCode-230-二叉搜尋樹中第K小的元素LeetCode
- Leetcode230. 二叉搜尋樹中第K小的元素LeetCode
- 第 k 大區間
- 快速部署DBus體驗實時資料流計算
- PHP陣列學習之計算陣列元素總和PHP陣列
- 3091. 執行操作使資料元素之和大於等於 K(中等)
- 雲端計算大資料面試題,雲端計算大資料面試題集錦大資料面試題
- 選擇問題(求第k個最小元素)
- 雲端計算與大資料[4]大資料
- 資料流中的中位數
- Golang框架實戰-KisFlow流式計算框架(4)-資料流Golang框架
- 獲取陣列第N個元素的方法陣列
- Flink流計算中SQL表的概念和原理SQL
- 盤點五種主流的大資料計算框架大資料框架
- Flink大資料計算的機遇與挑戰大資料
- Apache Flink,流計算?不僅僅是流計算!Apache
- Mysql 大資料表 資料匯入到SqlServer 中的方法MySql大資料Server
- 計算機網路中的資料交換計算機網路
- 圖解計算機中的資料表示形式圖解計算機