题目
代码
1、方法一
package com.graph;
import java.util.*;
public class Solution{
PriorityQueue<Integer> minHeap = new PriorityQueue<Integer>(Collections.reverseOrder());
PriorityQueue<Integer> maxHeap = new PriorityQueue<Integer>();
public void addNum(int num) {
minHeap.add(num);
maxHeap.add(minHeap.poll());//让数不管怎样加到了maxheap中
if(minHeap.size()<maxHeap.size()) {//maxHeap可能大1,反正拿一个给minHeap就平衡了
minHeap.add(maxHeap.poll());
}
}
public double findMedian() {
if(minHeap.size()==maxHeap.size()) {
return (minHeap.peek()+maxHeap.peek())/2.0;
}else {
return minHeap.peek();
}
}
}
package com.graph;
import java.util.*;
public class Solution{
PriorityQueue<Integer> minHeap = new PriorityQueue<Integer>(Collections.reverseOrder());
PriorityQueue<Integer> maxHeap = new PriorityQueue<Integer>();
public void addNum(int num) {
minHeap.add(num);
maxHeap.add(minHeap.poll());//让数不管怎样加到了maxheap中
if(minHeap.size()<maxHeap.size()) {//maxHeap可能大1,反正拿一个给minHeap就平衡了
minHeap.add(maxHeap.poll());
}
}
public double findMedian() {
if(minHeap.size()==maxHeap.size()) {
return (minHeap.peek()+maxHeap.peek())/2.0;
}else {
return minHeap.peek();
}
}
}
2、方法二
public class Solution{
List<Integer> list = new ArrayList<Integer>();
//log
public void addNum(int num){
list.add(num);
Collections.sort(list);
}
public int findMedian(){
int size = list.size();
if(size==0) return null;
if(size%2!=0){
return list.get(size/2);
}else{
return (list.get(size/2)+list.get(size/2-1))/2;
}
}
}