Skip to content

Commit c563638

Browse files
committed
Update Solution.cpp
1 parent 816af1a commit c563638

File tree

1 file changed

+11
-14
lines changed
  • solution/0200-0299/0295.Find Median from Data Stream

1 file changed

+11
-14
lines changed
Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,31 @@
11
class MedianFinder {
22
public:
3-
/** initialize your data structure here. */
43
MedianFinder() {
54
}
65

76
void addNum(int num) {
8-
q1.push(num);
9-
q2.push(q1.top());
10-
q1.pop();
11-
if (q2.size() - q1.size() > 1) {
12-
q1.push(q2.top());
13-
q2.pop();
7+
maxQ.push(num);
8+
minQ.push(maxQ.top());
9+
maxQ.pop();
10+
11+
if (minQ.size() > maxQ.size() + 1) {
12+
maxQ.push(minQ.top());
13+
minQ.pop();
1414
}
1515
}
1616

1717
double findMedian() {
18-
if (q2.size() > q1.size()) {
19-
return q2.top();
20-
}
21-
return (double) (q1.top() + q2.top()) / 2;
18+
return minQ.size() == maxQ.size() ? (minQ.top() + maxQ.top()) / 2.0 : minQ.top();
2219
}
2320

2421
private:
25-
priority_queue<int, vector<int>, greater<int>> q1;
26-
priority_queue<int> q2;
22+
priority_queue<int> maxQ;
23+
priority_queue<int, vector<int>, greater<int>> minQ;
2724
};
2825

2926
/**
3027
* Your MedianFinder object will be instantiated and called as such:
3128
* MedianFinder* obj = new MedianFinder();
3229
* obj->addNum(num);
3330
* double param_2 = obj->findMedian();
34-
*/
31+
*/

0 commit comments

Comments
 (0)