63資料流中的中位數

2021-10-02 08:43:23 字數 585 閱讀 8447

如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。我們使用insert()方法讀取資料流,使用getmedian()方法獲取當前讀取資料的中位數。

這個使用優先佇列的思路非常值得學習

priorityqueue

minheap =

newpriorityqueue

<

>()

;priorityqueue

maxheap =

newpriorityqueue

<

>

(new

comparator

()})

;int count =0;

public

void

insert

(integer num)

else

count++;}

public double getmedian()

else

}

63 資料流中的中位數

如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。思路 構造乙個最大堆和乙個最小堆,最大堆用來存放較小的那一半的資料,最小堆用來存放較大的那一半的資料,每次插入資料...

63 資料流中的中位數

如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。我們使用insert 方法讀取資料流,使用getmedian 方法獲取當前讀取資料的中位數。import j a....

63 劍指offer 資料流中的中位數

題目描述 如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值 解題思路 分為兩種情況,奇數取中間的數字,偶數取中間兩個數的平均值。使用兩個堆來實現,左側使用最大堆儲存...