class MovingAverage {
/** Initialize your data structure here. */
int size;
LinkedList<Integer> list;
double ans = 0;
/** Initialize your data structure here. */
public MovingAverage(int size) {
list = new LinkedList<>();
this.size = size;
}
public double next(int val) {
list.addLast(val);
ans += val;
if (list.size() > size){
ans -= list.getFirst();
list.removeFirst();
}
return ans / list.size();
}
}
/**
* Your MovingAverage object will be instantiated and called as such:
* MovingAverage obj = new MovingAverage(size);
* double param_1 = obj.next(val);
*/
使用双端队列,很好实现,具体细节看代码应该很简单

这篇博客介绍了如何利用Java的LinkedList实现移动平均值的数据结构。代码中定义了一个名为MovingAverage的类,它维护了一个双端队列来存储最近的数值,并通过计算去除最旧值后的平均数来得到移动平均值。该实现简洁高效,适用于实时数据流的平均值计算。
858

被折叠的 条评论
为什么被折叠?



