题面:Running Median
题目大意
顺序输入 n n n 个数,当下标为奇数时,就输出一次当前序列的中位数。
例如,当遍历或输入到第 i i i 个数时, i i i 恰好为奇数,则就要在序列 a [ 1 ] a[1] a[1] 到 a [ i ] a[i] a[i] 之间找到一个中位数,并输出出来。
思路
这题是对顶堆的板子题。用两个小根堆和大根堆来动态维护序列。
其中,大根堆维护较小的一半元素,小根堆维护较大的一半元素。
即:
- 序列中从小到大次序为 [ 1 , l e n / 2 ] [1,len/2] [1,len/2] 的整数存储在大根堆中。
- 序列中从小到大次序为 [ l e n / 2