思路
代码
import java.util.*;
public class Solution {
PriorityQueue<Integer> q1=new PriorityQueue<>((o1,o2)->Integer.compare(o2,o1));
PriorityQueue<Integer> q2=new PriorityQueue<>();
public void Insert(Integer num) {
if(q1.size()==0 ||q2 .size()==0){
if(q1.size()==0){
q1.add(num);
}else{
q2.add(num);
}
return;
}
// 与q1堆 比较交换
if(num<=q1.peek()){
q1.add(num);
num=q1.poll();
}
// 与q2堆 比较交换
if(num>q2.peek()){
q2.add(num);
num=q2.poll();
}
//现在 num介于q1,q2之间
if(q1.size()<=q2.size()){
q1.add(num);
}else{
q2.add(num);
}
}
public Double GetMedian() {
double min=q1.size()==0?0:q1.peek();
double max=q2.size()==0?0:q2.peek();
if(q1.size()==q2.size()){
return (min+max)/2;
}else{
return min;
}
}
}