牛客(63)数据流中的中位数
// 题目描述 // 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值, // 那么中位数就是所有数值排序之后位于中间的数值。 // 如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 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; } }