LeetCode Solutions
346. Moving Average from Data Stream
Time: $O(1)$ Space: $O(size)$
class MovingAverage {
public:
MovingAverage(int size) : size(size) {}
double next(int val) {
if (q.size() == size)
sum -= q.front(), q.pop();
sum += val;
q.push(val);
return sum / q.size();
}
private:
int size;
double sum = 0;
queue<int> q;
};
class MovingAverage {
public MovingAverage(int size) {
this.size = size;
}
public double next(int val) {
if (q.size() == size)
sum -= q.poll();
sum += val;
q.offer(val);
return sum / q.size();
}
private int size = 0;
private double sum = 0;
private Queue<Integer> q = new ArrayDeque<>();
}
class MovingAverage:
def __init__(self, size: int):
self.size = size
self.sum = 0
self.q = deque()
def next(self, val: int) -> float:
if len(self.q) == self.size:
self.sum -= self.q.popleft()
self.sum += val
self.q.append(val)
return self.sum / len(self.q)