php数据流中第K大元素的计算方式
短信预约 -IT技能 免费直播动态提醒
本篇内容介绍了“php数据流中第K大元素的计算方式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。
计算方法
直接使用最小堆,堆的大小为 k,这样保证空间占用最小,最小堆的根节点是就是最小值,也是我们想要的结果。
php的spl标准库是有最小堆这个库,直接在代码中继承SplMinHeap。
实例
class KthLargest extends SplMinHeap { static $nums; public $k; function __construct($k, $nums) { $this->k = $k; // 遍历初始化数组,分别插入堆中 foreach ($nums as $v) { $this->add($v); } } function add($val) { // 维持堆的大小为k,当堆还未满时,插入数据。 if ($this->count() < $this->k) { $this->insert($val); } elseif ($this->top() < $val) { // 当堆满的时候,比较要插入元素和堆顶元素大小。大于堆顶的插入。堆顶移除。 $this->extract(); $this->insert($val); } return $this->top(); }}
“php数据流中第K大元素的计算方式”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341