数据流中的中位数 发表于 2022-07-31 | 分类于 算法 , 优先队列 , 数据流中的中位数 | 数据流中的中位数 剑指 Offer 41. 数据流中的中位数123456789101112131415161718192021222324252627282930313233343536373839404142class MedianFinder {public: /** initialize your data structure here. */ //大顶堆 存较小值 priority_queue<int> min_pq; //小根堆 存较大值 priority_queue<int, vector<int>, greater<int>> max_pq; MedianFinder() { } void addNum(int num) { //先加入到较小值部分 min_pq.push(num); //将较小值中最大值 移入较大值部分 max_pq.push(min_pq.top()); min_pq.pop(); //平衡数量 if(min_pq.size() < max_pq.size()){ min_pq.push(max_pq.top()); max_pq.pop(); } } double findMedian() { //奇数个数 if(min_pq.size()>max_pq.size()){ return (double)min_pq.top(); }else{//偶数个数 return (double)(min_pq.top()+max_pq.top())/2; } }};/** * Your MedianFinder object will be instantiated and called as such: * MedianFinder* obj = new MedianFinder(); * obj->addNum(num); * double param_2 = obj->findMedian(); */ -------------本文结束 感谢阅读------------- 本文作者: HReina 本文链接: http://hreina.com/2022/07/31/%E6%95%B0%E6%8D%AE%E6%B5%81%E4%B8%AD%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95%B0/ 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!