我的LeetCode代码仓:https://github.com/617076674/LeetCode
原题链接:https://leetcode-cn.com/problems/find-median-from-data-stream/
题目描述:
知识点:优先队列、堆
思路:用一个最大堆有一个最小堆将数据分成两部分
最终,我们希望得到的数据分布结果是这样的:
如果数据是偶数个,那么最大堆left和最小堆right中的元素个数相等,且left的堆顶元素小于等于right的堆顶元素,那么我们可以取这两个堆顶元素的平均值作为中位数。
如果数据是奇数个,那么最大堆left比最小堆right中的元素少一个,且left的堆顶元素小于等于right的堆顶元素,那么我们可以取right的堆顶元素作为中位数。
那么问题来了,我们怎么样往这两个堆里添加数据才能保证得到上述分布结果呢<