问题描述
小U在经营一家餐厅,他希望根据每天的客流量数据来优化备货策略。为此,他需要计算从第一天到第ii天的中位客流量,并将其四舍五入为整数。
给定餐厅营业的总天数NN,以及每天的客流量数据RiRi,你需要输出一个长度为NN的序列,其中第ii个值表示从第一天到第ii天的中位客流量。所有输出结果都要求进行四舍五入。
测试样例
样例1:
输入:
N = 5 ,R = [1, 2, 3, 4, 10]
输出:[1, 2, 2, 3, 3]
样例2:
输入:
N = 3 ,R = [5, 10, 15]
输出:[5, 8, 10]
样例3:
输入:
N = 4 ,R = [2, 8, 6, 7]
输出:[2, 5, 6, 7]
C++解题
问题理解
你需要计算从第一天到第i天的中位客流量,并将其四舍五入为整数。中位数是指在一组数据中,位于中间位置的数。如果数据个数是奇数,中位数就是中间的那个数;如果是偶数,中位数是中间两个数的平均值。
数据结构选择
为了高效地找到中位数,我们可以使用两个堆(Heap):
- 一个大顶堆(Max Heap)来存储较小的一半数据。
- 一个小顶堆(Min Heap)来存储较大的一半数据。
通过维护这两个堆,我们可以快速找到中位数: