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

    Median is the middle value in an ordered integer list. If the size of the list is even, there is no middle value. So the median is the mean of the two middle value.

    Examples: 

    [2,3,4] , the median is 3

    [2,3], the median is (2 + 3) / 2 = 2.5

    Design a data structure that supports the following two operations:

    • void addNum(int num) - Add a integer number from the data stream to the data structure.
    • double findMedian() - Return the median of all elements so far.

    For example:

    add(1)
    add(2)
    findMedian() -> 1.5
    add(3) 
    findMedian() -> 2

    public class MedianFinder {
        int count = 0;
        int median = 0;
        PriorityQueue<Integer> q1 = new PriorityQueue<Integer>(new Comparator<Integer>(){
            public int compare(Integer a, Integer b){
                return b-a;
            }
        });
        PriorityQueue<Integer> q2 = new PriorityQueue<Integer>();
        // Adds a number into the data structure.
        public void addNum(int num) {
            count++;
            q1.add(num);
            q2.add(q1.poll());
            if(q1.size() < q2.size())
                q1.add(q2.poll());
        }
    
        // Returns the median of current data stream
        public double findMedian() {
            if(count > 0 && count % 2 == 0)
                return ((double)(q1.peek()) + (double)(q2.peek()))/2.0;
            else
                return q1.peek();
        }
    };
    
    // Your MedianFinder object will be instantiated and called as such:
    // MedianFinder mf = new MedianFinder();
    // mf.addNum(1);
    // mf.findMedian();
  • 相关阅读:
    谷歌浏览器解决跨域
    实现Linux共享Window文件
    linux安装显卡驱动
    jsduck 文档生成器
    linux 笔记
    Linux phpstorm 无法输入中文
    linux 安装composer
    Extjs动态生成表头(适用报表)
    关于git的配置与使用
    JSP解决中文乱码问题
  • 原文地址:https://www.cnblogs.com/joannacode/p/6132575.html
Copyright © 2011-2022 走看看