思路:
- 使用队列模拟窗口,先进先出,保持固定size
- 注意队列元素不满足size的情况怎么处理
代码:
class MovingAverage {
public:
queue<int> q;
int size = 0;
int sum = 0;
MovingAverage(int s) {size = s;}
double next(int val) {
//元素压入
q.push(val);
//判断队列是否超过size 超过 则删除头节点 更新sum
if (q.size() > size) {
q.pop();
sum = sum - q.front() + val;
}
else
sum += val;//没有超过size 则单纯更新sum
return (double)sum / q.size();
}
};