0%

346. Moving Average from Data Stream

O(1) time O(size) space

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class MovingAverage {
public:
/** Initialize your data structure here. */
MovingAverage(int size) : n(size), sum(0) {

}

double next(int val) {
q.push(val);
sum += val;
if (q.size() > n) {
sum -= q.front();
q.pop();
}
return sum / q.size(); // 切记不能除n!!!因为queue里不一定有n个数
}

int n;
double sum;
queue<int> q;
};

/**
* Your MovingAverage object will be instantiated and called as such:
* MovingAverage* obj = new MovingAverage(size);
* double param_1 = obj->next(val);
*/