Leetcode 346 : Moving Average from Data Stream
Solution to Moving Average from Data Stream problem.
class MovingAverage {
LinkedList<Integer> q = new LinkedList<>();
int size = 0;
int sum = 0;
/** Initialize your data structure here. */
public MovingAverage(int size) {
this.size = size;
}
public double next(int val) {
q.add(val);
sum += val;
if(q.size() > size) {
int e = q.remove();
sum -= e;
}
return sum * 1.0 / q.size();
}
}
Solution using array
class MovingAverage {
int size = 0;
int sum = 0;
int[] data;
int ptr = 0;
int curSize = 0;
/** Initialize your data structure here. */
public MovingAverage(int size) {
this.data = new int[size];
this.size = size;
}
public double next(int val) {
ptr = ptr % size;
sum -= data[ptr];
data[ptr++] = val;
sum += val;
if(curSize < size)
curSize++;
return sum * 1.0 / curSize;
}
}