您的位置:首页 > 其它

LeetCode "Find Median from Data Stream"

2015-10-20 14:05 351 查看
Similar one as LintCode "Data Stream Median".

class MedianFinder {
priority_queue<int> hl; // max-heap
priority_queue<int, vector<int>, std::greater<int> > hr; // min-heap
public:

// Adds a number into the data structure.
void addNum(int num) {
if(hl.empty())
{
hl.push(num);
}
else
{
if(num <= hl.top())
{
hl.push(num);
}
else
{
hr.push(num);
}
// main
if(hl.size() > (hr.size() + 1))
{
hr.push(hl.top());
hl.pop();
}
else if(hr.size() > hl.size())
{
hl.push(hr.top());
hr.pop();
}
}
}

// Returns the median of current data stream
double findMedian()
{
if(hl.size() > hr.size())
{
return hl.top() * 1.;
}
return (hl.top() + hr.top()) / 2.0;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: