问题描述:
Given a stream of integers and a window size, calculate the moving average of all integers in the sliding window.
Implement the MovingAverage class:
MovingAverage(int size) Initializes the object with the size of the window size.
double next(int val) Returns the moving average of the last size values of the stream.
求最后size个元素的平均值
思路:
用一个list将元素存储,每次取最后size个元素取平均值。
代码如下:
class MovingAverage {
private int windowSize;
private List<Integer> list;
/** Initialize your data structure here. */
public MovingAverage(int size) {
windowSize=size;
list=new ArrayList<Integer>();
}
public double next(int val) {
list.add(val);
if(list.size()<windowSize){
int sum=0;
for(int i=0; i<list.size(); i++){
sum=sum+list.get(i);
}
return (double)sum/list.size();
}
else{
int counter=0;
int i=list.size()-1;
int sum=0;
while(counter<windowSize){
sum=sum+list.get(i);
i--;
counter++;
}
return (double) sum/windowSize;
}
}
}