![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
堆
涛涛酱
北邮研究僧在读
展开
-
【LeetCode 295】Find Median from Data Stream
题目描述 Median is the middle value in an ordered integer list. If the size of the list is even, there is no middle value. So the median is the mean of the two middle value. For example, [2,3,4], the median is 3 [2,3], the median is (2 + 3) / 2 = 2.5 Design a原创 2020-05-18 13:38:29 · 90 阅读 · 0 评论 -
【剑指 offer】数据流中的中位数
题目描述: 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方3 法获取当前读取数据的中位数。 思路: 对于数据流,对应的就是在线算法了,一道很经典的题目就是在1亿个数中找到最大的前100个数,这...原创 2019-04-23 14:32:38 · 84 阅读 · 0 评论 -
【LeetCode 295.】 Find Median from Data Stream
题目描述: 实现数据结构,插入数据和查找中位数。 思路: vector + sort, O (n2n^2n2) 维护一个最大堆和一个最小堆,两者元素个数最大相差1,中位数即为最小堆堆顶元素或最大堆最小堆堆顶元素平均值。用优先队列实现。 用二叉搜索树维护数组,两个指针指向中位数元素。用multi_set实现。 代码: 堆: class MedianFinder { public: /...原创 2019-07-17 15:45:12 · 88 阅读 · 0 评论 -
【LeetCode 218.】The Skyline Problem
题意: 给出一组矩形的x1, x2, h参数,求出轮廓坐标。 思路: 扫描线算法。 用堆或二叉搜索树维护当前有效的楼的高度,扫描楼的进入和离开端点,如果是进入,而且高度高于已有的楼高度,是一个端点。如果是离开端点,当前高度和第二高度比较,如果当前高度高,记录第二高端点。 注意特殊情况,横坐标相等时按照什么顺序处理。 heap的话需要手写移除函数。 二叉搜索树可以用C++的multiset。 代码:...原创 2019-07-17 19:51:21 · 109 阅读 · 0 评论