Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class MedianFinder {
- private:
- multiset<int> nums;
- multiset<int>::iterator mid;
- public:
- MedianFinder() {
- mid = nums.begin();
- }
- void addNum(int num) {
- if (nums.empty()) {
- nums.insert(num);
- mid = nums.begin();
- } else if (num >= *mid && (int) nums.size() % 2 == 0) {
- nums.insert(num);
- mid++;
- } else if (num < *mid && (int) nums.size() % 2 == 1) {
- nums.insert(num);
- mid--;
- } else {
- nums.insert(num);
- }
- }
- double findMedian() {
- double ans = *mid;
- if ((int) nums.size() % 2 == 0) {
- auto it = mid; it++;
- ans += *it;
- ans /= 2.0;
- }
- return ans;
- }
- };
- /**
- * Your MedianFinder object will be instantiated and called as such:
- * MedianFinder* obj = new MedianFinder();
- * obj->addNum(num);
- * double param_2 = obj->findMedian();
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement