java 优先级队列示例(查找中位数)2017-06-19
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 优先级队列示例(查找中位数)2017-06-19相关的知识,希望对你有一定的参考价值。
package bearcola.queue.priorityqueue;
import java.util.PriorityQueue;
public class FindMedian {
public static void main(String[] args) {
MidTracker midTrack = new MidTracker();
for (int i=1; i<=5; i++) {
midTrack.read(i);
}
for (int item: midTrack.maxQ) {
System.out.println(item);
}
for (int item: midTrack.minQ) {
System.out.println(item);
}
System.out.println(midTrack.median());
}
}
class MidTracker {
PriorityQueue<Integer> minQ;
PriorityQueue<Integer> maxQ;
public MidTracker() {
minQ = new PriorityQueue<Integer>();
maxQ = new PriorityQueue<Integer>();
}
public void read(int num) {
if (maxQ.size() == minQ.size()) {
if (minQ.isEmpty() == false && num > minQ.peek()) {
maxQ.offer(-minQ.poll());
} else {
maxQ.offer(-num);
}
} else {
if (num < maxQ.peek()) {
minQ.offer(-maxQ.poll());
maxQ.offer(-num);
} else {
minQ.offer(num);
}
}
}
public double median() {
if (maxQ.isEmpty()) {
return -1;
}
if (maxQ.size() == minQ.size()) {
return (minQ.peek() - maxQ.peek()) / 2.0;
} else {
return -maxQ.peek();
}
}
}
以上是关于java 优先级队列示例(查找中位数)2017-06-19的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 295. 数据流的中位数(优先队列,Java)
java 优先级队列示例2017-06-19
Java优先队列(PriorityQueue)示例
中位数 (优先队列)
使用广度优先搜素查找路径
中位数( 优先队列较优处理 )