中位数----两个部分----两个堆
贴一份discuss中优雅的代码
class MedianFinder {
priority_queue<long> small, large;
public:
void addNum(int num) {
small.push(num);
large.push(-small.top());//负数模拟大根堆
small.pop();
if (small.size() < large.size()) {
small.push(-large.top());
large.pop();
}
}
double findMedian() {
return small.size() > large.size()
? small.top()
: (small.top() - large.top()) / 2.0;
}
};