Google算法题:寻找中位数

来源:互联网 发布:微信轰天雷炸群软件 编辑:程序博客网 时间:2024/05/17 04:56

题目


题目来源:Link



代码


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();}}}


2、方法二


public class Solution{List<Integer> list = new ArrayList<Integer>();//logpublic 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;}}}