zoukankan      html  css  js  c++  java
  • 295. Find Median from Data Stream

        /*
         * 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();
            }
        };
  • 相关阅读:
    linux 下安装 mysql (centos7)版本
    linux 安装php7 -系统centos7
    Beta阶段事后分析
    Beta阶段展示博客
    Beta阶段测试报告
    Beta阶段发布说明
    第二十次ScrumMeeting博客
    第十九次ScrumMeeting博客
    第十八次ScrumMeeting博客
    第十七次ScrumMeeting博客
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5636521.html
Copyright © 2011-2022 走看看