数据流中的中位数

需要学习资料的+微信公众号 学习资源后台找我


本人比较忙 我看到了会在后台帮你,谢谢关注啦


题目描述

如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。

思路:主要是判断是奇数还是偶数 用按位与&去判别最后一位是1 还是 0 ,是0表示偶数,是1表示奇数

代码如下:

import java.util.Collections;
import java.util.ArrayList;
public class Solution {

   ArrayList<Integer> list = new ArrayList<Integer>();
    public void Insert(Integer num) {
                list.add(num);
                Collections.sort(list);
    }

    public Double GetMedian() {
              int mid = list.size()/2;
              //最后一位和1相比如果为0表示偶数,如果为1表示奇数
              double  c = 0.0;
             if(((list.size())&1) == 0){

                      c = (Double.valueOf(list.get(mid)) +Double.valueOf(list.get(mid-1)))/2;
              }else{
                     c = Double.valueOf(list.get(mid));
             }
             return c;
    }


}


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值