您好,登錄后才能下訂單哦!
本篇內容介紹了“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大元素的計算方式”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。