剑指 Offer II 041. 滑动窗口的平均值:
题目链接 :剑指 Offer II 041. 滑动窗口的平均值
题目:给定一个整数数据流和一个窗口大小,根据该滑动窗口的大小,计算滑动窗口里所有数字的平均值。
实现 MovingAverage 类:
MovingAverage(int size) 用窗口大小 size 初始化对象。
double next(int val) 成员函数 next 每次调用的时候都会往滑动窗口增加一个整数,请计算并返回数据流中最后 size 个值的移动平均值,即滑动窗口里所有数字的平均值。
思路:
1、填入元素控制数量在窗口限制内
2、每次调用next()函数即计算当前窗口内元素的平均值返回
AC代码:
class MovingAverage {
Queue<Integer> qe;
int size;
double sum;
/** Initialize your data structure here. */
public MovingAverage(int size) {
qe=new LinkedList<>();
this.size=size;
sum=0;
}
public double next(int val) {
sum+=val;
if(qe.size()==size)
{
sum-=qe.poll();
}
qe.offer(val);
double ave=sum/qe.size();
return ave;
}
}
/** * Your MovingAverage object will be instantiated and called as such: * MovingAverage obj = new MovingAverage(size); * double param_1 = obj.next(val); */