摘要: 为了动态维护中位数,我们可以建立两个二叉堆:一个小根堆、一个大根堆。 在依次读入这个整数序列的过程中,设当前序列长度为M,我们始终保持: 序列中从小到大排名为1 ~ M/2的整数存储在大根堆中; 序列中从小到大排名为M/2+1 ~ M的整数存储在小根堆中, 大根堆允许存储的元素最多比小根堆多一个。 阅读全文
posted @ 2021-07-26 21:26 Dazzling! 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 法一 我们用一个大根堆实时维护数组的前 k 小值。首先将前 k 个数插入大根堆中,随后从第 k+1 个数开始遍历,如果当前遍历到的数比大根堆的堆顶的数要小,就把堆顶的数弹出,再插入当前遍历到的数。最后将大根堆里的数存入数组返回即可。 class Solution { public: vector<i 阅读全文
posted @ 2021-07-26 19:21 Dazzling! 阅读(36) 评论(0) 推荐(0) 编辑