Solution1 优先队列
时间复杂度
addNum: $O(logn)$
findMedian: $O(1)$
空间复杂度 $O(n)$
用两个优先队列 que_max, que_min, 分别存放大于中位数和小于中位数的数。
当数量为奇数数时,让 que_min 中的数比 que_max 中多一个。此时中位数就是 que_min 的队头。
当数量为偶数时,中位数就是他们两个队头的平均值
当添加数的时候
num <= max(que_min) 则把 num 添加到 que_min 中。并把可能多的元素移动到 que_max 中
num > max(que_min) 则把 num 添加到 que_max 中。并把可能多的元素移动到 que_min 中
当数量为 0 时,直接加到 que_min 中
Last updated