295. Find Median from Data Stream Posted on 2021-05-04 Edited on 2022-11-27 In leetcode Disqus: Symbols count in article: 875 Reading time ≈ 1 mins. 295. Find Median from Data Stream295. Find Median from Data Stream 12345678910111213141516171819202122232425262728293031323334353637383940class MedianFinder {public: /** initialize your data structure here. */ MedianFinder() { } void addNum(int num) { if(even) { large.push(num); small.push(large.top()); large.pop(); }else { small.push(num); large.push(small.top()); small.pop(); } even = !even; } double findMedian() { if(even) return static_cast<double>((small.top() + large.top())) / 2; else return small.top(); }private: priority_queue<int> small; priority_queue<int, vector<int>, std::greater<int>> large; bool even = true;};/** * Your MedianFinder object will be instantiated and called as such: * MedianFinder* obj = new MedianFinder(); * obj->addNum(num); * double param_2 = obj->findMedian(); */ small存放小的一半,large存放大的一半,保证small的大小永远等于large.size()或large.size() + 1