1. 程式人生 > >【劍指offer】41、數據流中的中位數

【劍指offer】41、數據流中的中位數

最小 left 均值 平均值 median 最小值 一個數 nbsp 如何

題目

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

思路

用一個最大堆存儲左邊的數據容器,用一個最小堆存儲右邊的數據容器

這樣的話,可以快速得到左邊的最大值 left_max,右邊的最小值 right_min,且滿足

left_max <= right_min

【劍指offer】41、數據流中的中位數