剑指offer——64.数据流中的中位数
来源:互联网 发布:武功 知乎 编辑:程序博客网 时间:2024/06/01 16:23
题目描述
如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。
代码
var arr=[]function Insert(num){ // write code here arr.push(num); arr.sort()}function GetMedian(){ // write code here var len=arr.length; if(len%2!=0){ return arr[Math.floor(len/2)]; }else{ return (arr[len/2-1]+arr[len/2])/2 }}
思路2:大小顶堆,数据流传输时,第偶个数,存入大顶堆中,然后将大顶堆中最大元素取出放入小顶堆中,第奇个数,存入小顶堆,然后将小顶堆中最小元素取出放入大顶堆中。最后小顶堆存放的元素都大于大顶堆存放元素。
当数量为偶数时候,访问大顶堆中最大元素和小顶堆中最小元素平均值,当数量为奇数时,访问小顶堆中最小元素。
var arr1=[],arr2=[],count=0;function Insert(num){ // write code here if(count%2==0){ arr1.push(num); arr1.sort(function(a,b){ return a-b; }) arr2.push(arr1.pop()); arr2.sort(function(a,b){ return b-a; }) }else{ arr2.push(num); arr2.sort(function(a,b){ return b-a; }) arr1.push(arr2.pop()); arr1.sort(function(a,b){ return a-b; }) } count++}function GetMedian(){ // write code here if(count%2!=0){ return arr2[arr2.length-1] }else{ return (arr1[arr1.length-1]+arr2[arr2.length-1])/2 }}
阅读全文
0 0
- 剑指offer——数据流中的中位数
- 剑指offer—数据流中的中位数
- 剑指offer — 数据流中的中位数
- 剑指offer—数据流中的中位数
- 剑指offer——64.数据流中的中位数
- 剑指offer(C++)——数据流中的中位数
- 剑指offer--数据流中的中位数
- 《剑指offer》数据流中的中位数
- 剑指offer:数据流中的中位数
- 剑指offer-数据流中的中位数
- 剑指offer 数据流中的中位数
- 《剑指offer》数据流中的中位数
- 剑指Offer:数据流中的中位数
- 剑指offer-数据流中的中位数
- 剑指offer 数据流中的中位数
- 剑指offer 64-数据流中的中位数
- 剑指offer(六十三)之数据流中的中位数
- 《剑指offer》:[64]数据流中的中位数
- 【NOIP模板】 堆-stl
- Inteilj IDEA快捷键
- Android仿淘宝头条向上滚动广告条的效果ViewFlipper
- 存储过程
- mobile-deep-learning(MDL)百度 移动端深度学习框架
- 剑指offer——64.数据流中的中位数
- 机器学习-贝叶斯算法
- iOS Masonry布局获取Frame
- mp4文件格式解析(二)
- ip rule和ip route操作路由表
- 2016香港-思维&数学-Playing with Numbers
- LeetCode-90. Subsets II
- CentOS更改yum源与更新系统
- 《监狱的公主大人》