数据流中的中位数

数据流中的中位数

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;
    }
}

}

全部评论

相关推荐

11-02 09:49
已编辑
货拉拉_测试(实习员工)
热爱生活的仰泳鲈鱼求你们别卷了:没事楼主,有反转查看图片
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务