資料流中的中位數

2021-09-12 05:39:20 字數 874 閱讀 9535

#ifndef tg_data_stream_median_h

#define tg_data_stream_median_h

#include #include #include #include// 面試題41:資料流中的中位數

// 題目:如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼

// 中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,

// 那麼中位數就是所有數值排序之後中間兩個數的平均值。

templateclass tg_data_stream_median

_min_heap.push_back(num);

push_heap(_min_heap.begin(), _min_heap.end(), std::greater());

}else

_max_heap.push_back(num);

push_heap(_max_heap.begin(), _max_heap.end(), std::less());}}

t getmedian()

t median = 0;

if((size & 1) == 1)

median = _min_heap[0];

else

median = (_min_heap[0] + _max_heap[0]) / 2;

return median;

}size_t size()

private:

std::vector_min_heap;

std::vector_max_heap;

};#endif // tg_data_stream_median_h

資料流中的中位數

資料流中的中位數 如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。解題思路 維護乙個大堆和乙個小堆,大堆表示序列前一半數,小堆表示序列後一半數,保持兩個堆的元素個...

資料流中的中位數

如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。class solution double getmedian else private vectordata c...

資料流中的中位數

如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。簡單題 找中位數 coding utf 8 class solution x def insert self,nu...