需要学习资料的+微信公众号 学习资源后台找我
本人比较忙 我看到了会在后台帮你,谢谢关注啦
题目描述
如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。
思路:主要是判断是奇数还是偶数 用按位与&去判别最后一位是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;
}
}