《剑指offer》面试题64 数据流中的中位数
来源:互联网 发布:沙钢集团网络培训 编辑:程序博客网 时间:2024/04/24 18:48
关于仿函数的文章
http://blog.csdn.net/sicofield/article/details/9050833
http://blog.csdn.net/chyuanzheng/article/details/7837165
二元仿函数(来自第一个链接)
等于:equal_to<T>
不等于:not_equal_to<T>
大于:greater<T>
大于等于:greater_equal<T>
小于:less<T>
小于等于:less_equal<T>
------------------------------------------------------------------------
/*参考书上思路,P289
用大小堆来实现
###max,min###
1 2,3 5 4
左右个数差1或者相等 (#所代表的数字无序)
!! pay attention to
判断奇偶数的时候一定要括号,用&的话
(size&1)==1
*/
class Solution { vector<int>min,max; public: void Insert(int num) { if(((min.size()+max.size())&1)==0)//偶数个,加入最小堆 { if(max.size()>0&&num<max[0]) { max.push_back(num); push_heap(max.begin(),max.end(),less<int>());//调整最大堆 /*新添加一个元素在末尾,然后重新调整堆序。也就是把元素添加在底层vector的end()处*/ num=max[0]; pop_heap(max.begin(),max.end(),less<int>());//删除最大堆的最大值 /*把堆顶元素取出来,放到了数组或者是vector的末尾,用原来末尾元素去替代*/ max.pop_back(); } min.push_back(num); push_heap(min.begin(),min.end(),greater<int>()); } else { if(min.size()>0 && num>min[0]) { min.push_back(num); push_heap(min.begin(),min.end(),greater<int>()); num=min[0]; pop_heap(min.begin(),min.end(),greater<int>()); min.pop_back(); } max.push_back(num); push_heap(max.begin(),max.end(),less<int>()); } } double GetMedian() { int size=min.size()+max.size(); if(size==0)return 0; double m=0; if((size&1)==1)//奇数 m=min[0]; else m=(min[0]+max[0])/2.0; //m是小数,所以是/2.0 不是/2 return m; }};
0 0
- 《剑指Offer》学习笔记--面试题64:数据流中的中位数
- 【剑指Offer学习】【面试题64:数据流中的中位数】
- 剑指offer-面试题64:数据流中的中位数
- 《剑指offer》面试题64 数据流中的中位数
- 剑指offer--面试题64:数据流中的中位数
- 剑指offer-面试题64-数据流中的中位数
- 剑指offer 面试题64 数据流中的中位数
- 剑指offer面试题[64]-数据流中的中位数
- 【剑指Offer】面试题64:数据流中的中位数
- 剑指offer面试题64 数据流中的中位数(Java实现)
- 面试题64:数据流中的中位数
- 面试题64:数据流中的中位数
- 【面试题64】数据流中的中位数
- 面试题64:数据流中的中位数
- 【剑指offer】面试题41:数据流的中位数
- 剑指offer 64-数据流中的中位数
- 《剑指offer》:[64]数据流中的中位数
- 【剑指offer】题64:数据流中的中位数
- numpy的random模块中的几个常用函数
- tomcat源码:Engine和Host容器
- FFmpeg常用基本命令
- 单例设计模式(Java)
- CMOS摄像头以及CAMIF
- 《剑指offer》面试题64 数据流中的中位数
- Android技术之ListView分割线显示和隐藏
- PHP register_shutdown_function函数的深入解析
- 【Codeforces Round #313 Div. 1】 559C Gerald and Giant Chess
- poj2914-Minimum Cut-Stoer-Wagner算法
- scala 拉链操作(zip族函数)
- JZOJ 4746 树塔狂想曲
- Android之严苛模式(StrictMode)
- js常用事件