数据流的median

原创 2015年07月06日 23:54:47

http://www.lintcode.com/en/problem/data-stream-median/

数据流的中位数,两个优先队列,或者两个堆,题目定义是靠前的一个数为median

struct Node1{
    int val;
    bool operator<(Node1 n) const{
        return val<n.val;
    }
};
struct Node2{
    int val;
    bool operator<(Node2 n) const{
        return val>n.val;
    }
};
class Solution {
public:
    /**
     * @param nums: A list of integers.
     * @return: The median of numbers
     */
    vector<int> medianII(vector<int> &n) {
        priority_queue<Node1> pq1;//max
        priority_queue<Node2> pq2;//min
        int median=INT_MIN;
        vector<int> ans;
        for(auto e: n){
            if(pq1.size()==pq2.size()){
                if(median==INT_MIN) median=e;
                else if(median<=e) pq2.push({e});
                else {
                    pq2.push({median});
                    pq1.push({e});
                    median=pq1.top().val;
                    pq1.pop();
                }
            } else{
                if(median<=e){
                    pq1.push({median});
                    pq2.push({e});
                    median=pq2.top().val;
                    pq2.pop();
                } else pq1.push({e});
            }
            ans.push_back(median);
        }
        return ans;
    }
};


版权声明:本文为博主原创文章,未经博主允许不得转载。

《剑指offer》:[64]数据流中的中位数

题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数据排序后中间两个数的平均值。 例如:...
  • gogoky
  • gogoky
  • 2016年06月30日 10:21
  • 1224

295. Find Median from Data Stream&数据流中的中位数

题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。解答 ...
  • sjt091110317
  • sjt091110317
  • 2016年03月14日 09:25
  • 586

数据流基本问题--独立元素计数(一)

下面我们讨论如何计算独立元素数目。 一、问题定义 如果一个数据流,其中m为数据流的大小,。我们可以定义每个元素出现的次数为,其中为第i个元素出现的次数。假设,容易得知d为在数据流中出现的不同元素数目,...
  • dm_ustc
  • dm_ustc
  • 2015年05月23日 09:25
  • 1072

POJ_Dynamic Median 数据流的中位数

Dynamic Median 查看提交统计提问 总时间限制: 3000ms 内存限制: 65536kB 描述 设计一个数据结构,初始为空,支持以下操作: ...
  • lxt1994
  • lxt1994
  • 2017年10月19日 16:31
  • 192

图像处理滤波器(二)——中值滤波器(Median Filter)

描述:中值滤波器也是为了减少噪声,跟均值滤波器差不多,但是它比均值滤波器保留更多的细节。 什么是中值滤波器? 中值滤波器也是模板滤波器,不过此处的模板只是一个模板,里面没有数字而已...
  • lj695242104
  • lj695242104
  • 2012年02月27日 16:50
  • 10023

找最小的第k个数 k min (Selection Algorithm 与 Median of Medians Algorithm)

题目很简单:要求一个算法能在一个长度为n的无序数组中找到第k小的数(k从0开始) 例如:4, 1, 2, 5 序列的第2小的数应该是4. 因为原数列排序后为1,2,4,5 所以第0小的数是1,第1小的...
  • hellobinfeng
  • hellobinfeng
  • 2014年03月17日 10:45
  • 4415

两个有序数组的中位数Median of Two Sorted Arrays(很重要)

https://leetcode.com/problems/median-of-two-sorted-arrays/ 对于一个长度为n的已排序数列a,若n为奇数,中位数为a[n / 2 + 1]...
  • gao1440156051
  • gao1440156051
  • 2016年06月21日 11:11
  • 3660

【算法】中位数 median

median 是 STL 内部的算法,用于求三个数的中位数,它将用于 std::sort, std::nth_element 的实现中,快速排序和求第 k 小数算法都用到了划分,选取 pivot 时为...
  • Justme0
  • Justme0
  • 2014年04月26日 22:23
  • 3667

median

中位数是一个可将数值集合划分为相等的上下两部分的一个数值。如果列表数据的个数是奇数,则列表中间那个数据就是列表数据的中位数;如果列表数据的个数是偶数,则列表中间那2个数据的算术平均值就是列表数据的中位...
  • koko66
  • koko66
  • 2014年10月16日 14:14
  • 826

《LeetBook》leetcode题解(4): Median of Two Sorted Arrays[H]——两个有序数组中值问题

004. Median of Two Sorted Arrays[H]Median of Two Sorted ArraysH 题目 分析 思路1 思路2 预备知识 先解释下割 双数组找第k个元素 我...
  • hk2291976
  • hk2291976
  • 2016年04月09日 21:24
  • 2622
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据流的median
举报原因:
原因补充:

(最多只允许输入30个字)