OJ Tricks
min max heap usage
如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值
排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之
后中间两个数的平均值。
一个大堆,一个小堆,保证 大堆的头永远比小堆的头最小,并且两者数量接近(差一,或者相
等)保存4个变量,两个堆的数量,以及堆的顶值,
min_size, max_size, min_top. max_top
当获得一个新的数,如果小于 min_top, 就放进 max_heap
中,但是可以判断一下和 max_top 的大小,这样可以更新它
然后在做判断, 是否 max_size > min_size,
是的话,就把 max_top 放入 min_heap 中,它当然是最小的,所以可以更新
这时候,我们再更新, max_size, min_size, 这样即可保证两者数量接近
并且俩个堆也一定是连续的
max_top| |min_top 两者构成的区间,在不停的移动~~ 两堆数量相近
DP
Last updated