标签:
/* * 295. Find Median from Data Stream * 12.18 by Mingyang MinHeap is the minimal on the * 刚开始我把题意理解错误,以为是所有数的一半 * 这里用两个heap,max heap最大的在上面,装最小的那一半,min反之 * 最开始全部放max,然后max排序以后把最大的给min * 然后如果是平衡的(两个相等个数,那么就ok,如果不相等,就把max再放入一个) * 宗旨就是保持两个的大小相等,如不,就在max里面多放一个(多放在min一样的) */ class MedianFinder { // max queue is always larger or equal to min queue PriorityQueue<Integer> min = new PriorityQueue(); PriorityQueue<Integer> max = new PriorityQueue(1000, Collections.reverseOrder()); // Adds a number into the data structure. public void addNum(int num) { max.offer(num); min.offer(max.poll()); if (max.size() < min.size()){ max.offer(min.poll()); } } // Returns the median of current data stream public double findMedian() { if (max.size() == min.size()) return (max.peek() + min.peek()) / 2.0; else return max.peek(); } };
295. Find Median from Data Stream
标签:
原文地址:http://www.cnblogs.com/zmyvszk/p/5636521.html