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大的元素陣列
- TopK問題,陣列中第K大(小)個元素問題總結TopK陣列
- 大資料開發實戰:實時資料平臺和流計算大資料
- php中計算時間差的幾種方法PHP
- 215. 陣列中的第K個最大元素陣列
- 大資料計算生態之資料計算(二)大資料
- 大資料計算生態之資料計算(一)大資料
- 大資料計算的基石——MapReduce大資料
- TLP元素與PCIE資料流
- PHP從陣列中刪除元素的方法PHP陣列
- PHP中的資料庫連線方法PHP資料庫
- 雲端計算大資料面試題,雲端計算大資料面試題集錦大資料面試題
- 大資料時代下的雲端計算大資料
- 雲端計算和大資料大資料
- 力扣-215. 陣列中的第K個最大元素力扣陣列
- [LeetCode] Kth Largest Element in an Array (找出陣列的第k大的元素)LeetCode陣列
- php中的html元素PHPHTML
- 【計算機組成原理】第6章 計算機的運算方法計算機
- LeetCode-215-陣列中的第K個最大元素LeetCode陣列
- 雲端計算與大資料[4]大資料
- PBR Metallic/Roughness工作流中Albedo與F0的計算方法
- 資料流中的中位數
- 快速部署DBus體驗實時資料流計算
- 前沿研究:大資料時代的簡約計算大資料
- 計算機網路中的資料交換計算機網路
- 大資料與雲端計算概論大資料
- 人工智慧+大資料+雲端計算人工智慧大資料
- 選擇問題(求第k個最小元素)
- 選擇問題——選取第K小元素
- Mysql 大資料表 資料匯入到SqlServer 中的方法MySql大資料Server
- 人工智慧,大資料,雲端計算大雜燴人工智慧大資料
- Golang框架實戰-KisFlow流式計算框架(4)-資料流Golang框架