博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Find Median from Data Stream
阅读量:6592 次
发布时间:2019-06-24

本文共 1094 字,大约阅读时间需要 3 分钟。

shares a very nice solution using two heaps: a max heap for the smaller half and a min heap for the larger half. The code is rewritten below in C++, simplifying addNum using the logic in .

class MedianFinder {public:    // Adds a number into the data structure.    void addNum(int num) {        maxH.push(num);        int t = maxH.top();        maxH.pop(); minH.push(t);        int m = maxH.size(), n = minH.size();        if (n > m) {            int t = minH.top();            minH.pop(); maxH.push(t);        }    }    // Returns the median of current data stream    double findMedian() {         int m = maxH.size(), n = minH.size();        if (!m && !n) return 0.0;        if (m == n) return (maxH.top() + minH.top()) / 2.0;        return (m > n) ? maxH.top() : minH.top();    }private:    priority_queue
, less
> maxH; // stores the smaller half priority_queue
, greater
> minH; // stores the larger half};// Your MedianFinder object will be instantiated and called as such:// MedianFinder mf;// mf.addNum(1); // mf.findMedian();

 

转载于:https://www.cnblogs.com/jcliBlogger/p/4893468.html

你可能感兴趣的文章
LOJ 6277:数列分块入门 1(分块入门)
查看>>
Sql server 0x80131904
查看>>
git
查看>>
ZeroMQ指南-第1章-基础-修复这个世界 ...
查看>>
JDK9版本以上Java独有的一个轻量级小工具,你知道吗?jshell
查看>>
【C++并发实战】(三) std::future和std::promise
查看>>
Ubuntu 下建立WiFi热点的方法
查看>>
SQL中Group By的使用
查看>>
《图像处理实例》 之 中轴线提取
查看>>
100. 删除排序数组中的重复数字
查看>>
恢复旋转排序数组
查看>>
hibernate保存失败
查看>>
C# Excel导入导出
查看>>
JS判断浏览器类型和屏幕分辨率来调用不同的CSS样式
查看>>
VS2012编写C语言项目
查看>>
微信服务号内容分享和自定义分享
查看>>
V1-bug Alpha阶段发布说明
查看>>
格式化输出数字
查看>>
计算机学科技术前沿:网络安全基础应用与标准
查看>>
龙龙背作文V1.0——考研英语作文专项训练软件
查看>>