LeetCode 剑指 Offer II 041. 滑动窗口的平均值
给定一个整数数据流和一个窗口大小,根据该滑动窗口的大小,计算滑动窗口里所有数字的平均值。
实现 MovingAverage 类:
MovingAverage(int size) 用窗口大小 size 初始化对象。
double next(int val) 成员函数 next 每次调用的时候都会往滑动窗口增加一个整数,请计算并返回数据流中最后 size 个值的移动平均值,即滑动窗口里所有数字的平均值。
class MovingAverage {
public:
/** Initialize your data structure here. */
MovingAverage(int sz) : size(sz) { }
double next(int val) {
if (q.size() < size) {
q.push_back(val);
sum += val;
} else {
sum -= q.front();
sum += val;
q.pop_front();
q.push_back(val);
}
return sum / static_cast<double>(q.size());
}
private:
int size = 0;
int sum = 0;
deque<int> q;
};
/**
* Your MovingAverage object will be instantiated and called as such:
* MovingAverage* obj = new MovingAverage(size);
* double param_1 = obj->next(val);
*/