642. 数据流滑动窗口平均值
给出一串整数流和窗口大小,计算滑动窗口中所有整数的平均值。
样例
样例1 :
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
public class MovingAverage {
double[] doubles;
int flag=0;
boolean full=false;
double sum=0;
/*
* @param size: An integer
*/public MovingAverage(int size) {
// do intialization if necessary
doubles=new double[size];
}
/*
* @param val: An integer
* @return:
*/
public double next(int val) {
// write your code here
if (flag>=doubles.length){
flag=0;
full=true;
}
sum=sum+val;
if (full){
sum= sum- doubles[flag];
doubles[flag]=val;
flag++;
return sum/doubles.length;
}else {
doubles[flag]=val;
flag++;
return sum/flag;
}
}
}