题目:
代码(首刷看解析 2024年3月9日):
class MedianFinder {
private:
priority_queue<int> maxHeap;
priority_queue<int, vector<int>, greater<int>> minHeap;
public:
MedianFinder() {
}
void addNum(int num) {
if (maxHeap.empty() || num < maxHeap.top()) {
maxHeap.push(num);
} else {
minHeap.push(num);
}
if (maxHeap.size() > minHeap.size() + 1) {
minHeap.push(maxHeap.top());
maxHeap.pop();
} else if (minHeap.size() > maxHeap.size()) {
maxHeap.push(minHeap.top());
minHeap.pop();
}
}
double findMedian() {
if (maxHeap.size() == minHeap.size()) {
return double(maxHeap.top() + minHeap.top()) / 2.0;
} else {
return double(maxHeap.top());
}
}
};