链接:
问题描述,示例,和提示:
代码:
class MovingAverage {
public:
/** Initialize your data structure here. */
MovingAverage(int size)
:_size(size)
,_sum(0.0)
{}
double next(int val) {
if(_q.size() == _size)
{
_sum-=_q.front();
_q.pop();
}
_q.push(val);
_sum+=val;
return _sum/_q.size();
}
private:
queue<int> _q;
int _size;
double _sum;
};
/**
* Your MovingAverage object will be instantiated and called as such:
* MovingAverage* obj = new MovingAverage(size);
* double param_1 = obj->next(val);
*/
题目解析:
模拟过程:
我们可以根据题意得知,这个题目对头删和尾插比较频繁
所以:优先选择队列
根据示例得知:
当队列里面的数据不足size个,除的是队列里数据个数
队列里面最多放size个数据