码迷,mamicode.com
首页 > 其他好文 > 详细

295. Find Median from Data Stream

时间:2016-07-03 08:12:28      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

    /*
     * 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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!