leetcode-295-Find Median from Data Stream
来源:互联网 发布:java可变参数判断为空 编辑:程序博客网 时间:2024/05/21 10:05
问题
题目:[leetcode-295]
思路
基本思路就是将前半部分元素维护在大根堆当中。
后半部分元素维护在小根堆当中。
但是要注意的是,大根堆和小根堆可以维护各自的有序性。但是,这两个部分的有序性需要在每次插入的时候特别判断以下。
每次,都进行维护。这样就不会出现某一次插入需要弹出很多元素的情形。
代码
class MedianFinder {public: /** initialize your data structure here. */ MedianFinder() : size(0) {} void addNum(int num) { if( size & 0x1 ) { if( !max_heap.empty() && num < max_heap.top() ) { int e = max_heap.top(); max_heap.pop(); min_heap.push(e); max_heap.push(num); } else min_heap.push(num); } else{ if( !min_heap.empty() && num > min_heap.top() ) { int e = min_heap.top(); min_heap.pop(); max_heap.push(e); min_heap.push(num); } else max_heap.push(num); } ++size; } double findMedian() { if( size & 0x1 ) return max_heap.top(); else return ( max_heap.top() + min_heap.top() ) * 1.0 / 2; }private: priority_queue< int, vector<int>, less<int> > max_heap; priority_queue< int, vector<int>, greater<int> > min_heap; int size;};/** * Your MedianFinder object will be instantiated and called as such: * MedianFinder obj = new MedianFinder(); * obj.addNum(num); * double param_2 = obj.findMedian(); */
阅读全文
0 0
- Find Median from Data Stream leetcode 295
- leetcode 295:Find Median from Data Stream
- leetcode 295 : Find Median from Data Stream
- [LeetCode 295] Find Median from Data Stream
- Leetcode (295) Find Median from Data Stream
- leetcode-295-Find Median from Data Stream
- LeetCode Find Median from Data Stream
- Leetcode -- Find Median from Data Stream
- leetcode之Find Median from Data Stream
- [LeetCode] Find Median from Data Stream
- [leetcode][C++]Find Median from Data Stream
- LeetCode Find Median from Data Stream 堆
- leetcode Find Median from Data Stream
- [LeetCode]Find Median from Data Stream
- leetcode笔记:Find Median from Data Stream
- Leetcode 295. Find Median from Data Stream
- Leetcode - 295. Find Median From Data Stream
- [leetcode] 295. Find Median from Data Stream
- 高度自适应的输入框
- Spark教程
- windows下python3安装opencv
- 作为程序员的你,除了撸代码,还能干什么?
- MPAndroidChart项目实战(九)——自定义带文字分段堆积柱状图
- leetcode-295-Find Median from Data Stream
- 2017年中总结
- 仿微信的弹出菜单—ALActionSheetView
- 获取当前服务器ip地址
- easyui行文本编辑,日期编辑
- Chrome开发者工具面板功能
- 文件权限的操作
- spring源码学习(七)Bean的加载(下)
- Git:warning: ignoring broken ref refs/remotes/origin/HEAD