1. 程式人生 > >面試題:數據流中的中位數

面試題:數據流中的中位數

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{ return
Double.valueOf(list.get(mid)); } } }

int 和 Integer 的區別

1、int是基本的數據類型,Integer是int的包裝類

2、int可以直接使用,Integer必須實例化才可以使用

3、int直接存儲數據值,Integer是對象的引用,當new一個Integer時,實際上生成一個指針指向該對象

4、int默認值是0,Integer默認值是null

面試題:數據流中的中位數