Moving Average from Data Stream
给一个steam和size, 求平均数. 用queue.
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 28 29 30 31 32 33 34 35 |
class MovingAverage { /** Initialize your data structure here. */ Queue<Integer> q; int size; public MovingAverage(int size) { q = new LinkedList<>(); this.size = size; } public double next(int val) { if(q.size() < size) { q.add(val); int c = q.size(); int sum = 0; for(int n : q) sum += n; return (double) sum / c; } else { q.poll(); q.add(val); int sum = 0; for(int n : q) sum += n; return (double) sum / size; } } } /** * Your MovingAverage object will be instantiated and called as such: * MovingAverage obj = new MovingAverage(size); * double param_1 = obj.next(val); */ |