queue<int> q;int sum, siz;MovingAverage(int size){
sum =0;
siz = size;}doublenext(int val){
q.push(val);
sum += val;if(q.size()> siz){
sum -= q.front();
q.pop();}return1.0*sum/q.size();}
滑动窗口最大值
// 优先队列 O(nlogn)
vector<int>maxSlidingWindow(vector<int>& nums,int k){
vector<int> ret;if(nums.empty()||!k)return ret;
priority_queue<pair<int,int>> Q;for(int i =0; i < k;++i)
Q.push({nums[i], i});
ret.push_back(Q.top().first);for(int i = k; i < nums.size();++i){
Q.push({nums[i], i});while(Q.top().second <= i-k)
Q.pop();
ret.push_back(Q.top().first);}return ret;}// 单调队列 O(n)
vector<int>maxSlidingWindow(vector<int>& nums,int k){
vector<int> ret;if(nums.empty()||!k)return ret;
deque<int> id;for(int i =0; i < k;++i){while(id.size()&& nums[i]>= nums[id.back()])
id.pop_back();
id.push_back(i);}
ret.push_back(nums[id.front()]);for(int i = k; i < nums.size();++i){while(id.size()&& nums[i]>= nums[id.back()])
id.pop_back();
id.push_back(i);while(id.front()<= i-k)
id.pop_front();
ret.push_back(nums[id.front()]);}return ret;}