描述
给出一串整数流和窗口大小,计算滑动窗口中所有整数的平均值。
您在真实的面试中是否遇到过这个题?
是
样例
MovingAverage m = new MovingAverage(3);
m.next(1) = 1 // 返回 1.00000
m.next(10) = (1 + 10) / 2 // 返回 5.50000
m.next(3) = (1 + 10 + 3) / 3 // 返回 4.66667
m.next(5) = (10 + 3 + 5) / 3 // 返回 6.00000
根据题目要求来看,使用队列是最好的办法
class MovingAverage {
public:
/*
* @param size: An integer
*/MovingAverage(int size) {
// do intialization if necessary
m_size=size;
sum=0;
}
/*
* @param val: An integer
* @return:
*/
double next(int val) {
// write your code here
if(m_que.size()>=m_size){
sum-=m_que.front();
m_que.pop();
}
m_que.push(val);
sum+=val;
return sum/m_que.size();
}
private:
queue<int> m_que;
int m_size;
double sum;
};
/**
* Your MovingAverage object will be instantiated and called as such:
* MovingAverage obj = new MovingAverage(size);
* double param = obj.next(val);
*/