题目描述[原题链接][https://www.acwing.com/problem/content/description/88/]
如何得到一个数据流中的中位数?
如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。
如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。
样例
1 | 输入:1, 2, 3, 4 |
算法描述
定义一个大根堆和一个小根堆,每次向大根堆中添加元素,添加完成后,判断两个堆顶的元素大小,如果大根堆堆顶的元素大于小根堆的堆顶,交换元素,如果大根堆元素个-
小根堆元素大于1,大根堆弹出一个元素加入到小根堆中,直到最后结束。
C++代码
1 | class Solution { |
Java代码
1 | class Solution { |