5、寻找数据流的中位数
作者:互联网
寻找数据流的中位数:
代码实现
/**
* 设计一个数据结构:
* 得到一个数据流的中位数
*/
public class MedianFinder {
PriorityQueue<Integer> bigHeap;
PriorityQueue<Integer> smallHeap;
public MedianFinder() {
bigHeap = new PriorityQueue<>(((o1, o2) -> o2 - o1));
smallHeap = new PriorityQueue<>();
}
public void addNum(int val) {
bigHeap.add(val);
smallHeap.add(bigHeap.poll());
if (bigHeap.size() + 1 < smallHeap.size()) {
bigHeap.add(smallHeap.poll());
}
}
public double findMedian() {
if (smallHeap.size() > bigHeap.size())
return smallHeap.size();
return (double) (smallHeap.peek() + bigHeap.peek());
}
}
标签:smallHeap,bigHeap,中位数,寻找,PriorityQueue,add,数据流,public,size 来源: https://www.cnblogs.com/hiluo/p/15913683.html