首页 > 其他 > 详细

牛客(63)数据流中的中位数

时间:2018-06-04 13:44:48      阅读:169      评论:0      收藏:0      [点我收藏+]
//    题目描述
//    如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,
//    那么中位数就是所有数值排序之后位于中间的数值。
//    如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。



    LinkedList<Integer> linkedList = new LinkedList<Integer>();
    public void Insert(Integer num) {
        if (linkedList.size()==0||num<linkedList.getFirst()){
            linkedList.addFirst(num);
        }else{
            boolean isMax = true;
            for (Integer integer: linkedList) {
                if (num<integer){
                    int index = linkedList.indexOf(integer);
                    linkedList.add(index,num);
                    isMax = false;
                    break;
                }
            }
            if (isMax) {
                linkedList.addLast(num);
            }
        }
    }

    public Double GetMedian() {
        if (linkedList.size()==0){
            return null;
        }

        if (linkedList.size()%2==1){
            int index = linkedList.size()/2;
            return Double.valueOf(linkedList.get(index));
        }else{
            int index = linkedList.size()/2;
            Double result = (linkedList.get(index)+linkedList.get(index-1))/2.0;
            return result;
        }
    }

 

牛客(63)数据流中的中位数

原文:https://www.cnblogs.com/kaibing/p/9132626.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!