Advertisement
nikunjsoni

295

May 24th, 2021
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.86 KB | None | 0 0
  1. class MedianFinder {
  2. public:
  3.     multiset<int> data;
  4.     multiset<int>::iterator mid;
  5.     /** initialize your data structure here. */
  6.     MedianFinder() {
  7.         mid = data.end();
  8.     }
  9.    
  10.     void addNum(int num) {
  11.         int n = data.size();
  12.         data.insert(num);
  13.         if(!n){
  14.             mid = data.begin();
  15.         }
  16.         else if(num < *mid){
  17.             if(n%2 == 0) mid = prev(mid);
  18.         }
  19.         else{
  20.             if(n&1) mid = next(mid);
  21.         }
  22.     }
  23.    
  24.     double findMedian() {
  25.         int n = data.size();
  26.         if(n&1)
  27.             return double(*mid);
  28.         else
  29.             return double(*mid+*prev(mid))/2.0;
  30.     }
  31. };
  32.  
  33. /**
  34.  * Your MedianFinder object will be instantiated and called as such:
  35.  * MedianFinder* obj = new MedianFinder();
  36.  * obj->addNum(num);
  37.  * double param_2 = obj->findMedian();
  38.  */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement