思路: 使用ArrayList来动态存储整数数据,添加起始位置start和终止位置end来定位滑动窗口。 对于next方法,每次存储数据时终止位置要加1,而且要判断当前数据量是否大于滑动窗口的大小,如果大于滑动窗口的话,在定位滑动窗口时起始位置也要加1,这时我们就可以根据start和end来得到处在滑动窗口中的数据了,从而求得平均值 代码:
class MovingAverage {
int size;
int start;
int end;
List<Integer> list;
public MovingAverage(int size) {
this.size = size;
start = 0;
end = 0;
list = new ArrayList<>();
}
public double next(int val) {
int sum = 0;
double avg;
list.add(val);
if(list.size() > size){
start++;
}
end++;
for(int i = start;i < end;i++){
sum += list.get(i);
}
return (double) sum / (double) (end - start);
}
}
|