思路:
- 使用队列模拟窗口,先进先出,保持固定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();
}
};
本文介绍了如何使用队列数据结构模拟滑动窗口,通过C++代码实现移动平均算法,确保在固定大小限制下处理数据流。关键点在于处理队列满时的数据剔除和更新求和操作。
1万+

被折叠的 条评论
为什么被折叠?



