简单
技术面试0 次浏览

在华为的通信业务中,经常需要处理大量的数据流。假设有一个数据流,其中包含一系列整数,要求编写一个函数,找出该数据流中的中位数。中位数是指将一组数据按照从小到大的顺序排列后,位于中间位置的数值,如果数据个数为偶数,则中位数是中间两个数的平均值。请用 Python 实现该函数。

华为算法工程师
Python数据流处理中位数计算

答题要点

推荐使用面向对象的答题框架。关键要点如下:1. 初始化两个堆,一个最大堆和一个最小堆,最大堆存储较小的一半数,最小堆存储较大的一半数。2. 插入数据时,根据数据大小和两个堆的元素数量,决定将数据插入哪个堆。3. 调整两个堆的元素数量,确保最大堆的元素数量要么与最小堆相等,要么比最小堆多一个。4. 根据两个堆的元素数量,计算中位数。示例思路:定义一个类,包含插入和获取中位数的方法。在插入方法中,根据元素大小和堆的情况插入元素并调整堆。在获取中位数方法中,根据堆的元素数量计算中位数。