面試題:數據流中的中位數
阿新 • • 發佈:2018-08-27
media solution ava 包裝類 median insert 指向 指針 ()
題目描述:如何得到一個數據流中的中位數?如果從數據流中讀出奇數個數值,那麽中位數就是所有數值排序之後位於中間的數值。如果從數據流中讀出偶數個數值,那麽中位數就是所有數值排序之後中間兩個數的平均值。我們使用Insert()方法讀取數據流,使用GetMedian()方法獲取當前讀取數據的中位數。
思路:如果是奇數則輸出排序後中間的數字,如果是偶數則輸出排序後中將兩個數字的平均值
import java.util.*; 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; if(list.size()%2==0){ return (Double.valueOf(list.get(mid))+Double.valueOf(list.get(mid-1)))/2; }else{ returnDouble.valueOf(list.get(mid)); } } }
int 和 Integer 的區別
1、int是基本的數據類型,Integer是int的包裝類
2、int可以直接使用,Integer必須實例化才可以使用
3、int直接存儲數據值,Integer是對象的引用,當new一個Integer時,實際上生成一個指針指向該對象
4、int默認值是0,Integer默認值是null
面試題:數據流中的中位數