数据流中的中位数

数据流中的中位数

http://www.nowcoder.com/questionTerminal/9be0172896bd43948f8a32fb954e1be1

题目描述
如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数

思路:treeset可以实现插入的时候排序(不知道是不是想简单了)

代码:
import java.util.Set;
import java.util.TreeSet;
public class Solution {

Set<Integer> set=new TreeSet<>();
public void Insert(Integer num) {
    set.add(num);
}

public Double GetMedian() {
    if(set.size()%2==0) {//偶数2,3
        int count=1;
        double sum=0;
        for (Integer integer : set) {
            if(count==set.size()/2||count==set.size()/2+1) {
                sum+=integer;
            }
            count++;
        }
        return sum/2;
    }else {//2,3,4
        int count=1;
        double sum=0;
        for (Integer integer : set) {
            if(count==set.size()/2+1) {
                sum=integer;
                break;
            }
            count++;
        }
        return sum;
    }
}

}

全部评论

相关推荐

03-31 17:40
已编辑
门头沟学院 算法工程师
程序员牛肉:小牛肉来也! 也不要焦虑啦,你第一志愿还没有结束,只是回到人才库(泡大池子等待各个部门挑选)而已。仅仅代表你不符合这个组的用人标准,并不能够说明你在本次暑期实习中没机会加入美团了。 还是平复好心态,不断的复盘,等待下一次面试就好了。
点赞 评论 收藏
分享
mjasjon:这种trash中厂 简历过筛概率比大厂还低(除阿里系)
投递哔哩哔哩等公司6个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务