Advertisement
nikunjsoni

480

Apr 18th, 2021
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.79 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     vector<double> medianSlidingWindow(vector<int>& nums, int k) {
  4.         multiset<int> window(nums.begin(), nums.begin()+k);
  5.         auto mid = next(window.begin(), k/2);
  6.         vector<double> ans;
  7.        
  8.         for(int i=k; i<=nums.size(); i++){
  9.             double median = 0.0;
  10.             if(k&1)
  11.                 median = *mid;
  12.             else
  13.                 median = (double(*mid) + *prev(mid, 1))/2.0;
  14.             ans.push_back(median);
  15.            
  16.             if(i == nums.size()) break;
  17.            
  18.             window.insert(nums[i]);
  19.             if(nums[i] < *mid)
  20.                 mid--;
  21.             if(nums[i-k] <= *mid)
  22.                 mid++;
  23.             window.erase(window.lower_bound(nums[i-k]));
  24.         }
  25.         return ans;
  26.     }
  27. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement