Given a stream of integers and a window size, calculate the moving average of all integers in the sliding window.
For example,
MovingAverage m = new MovingAverage (3), m.next (1) = 1m.next (1 +)/2m.next (3) = (1 + 3)/3m.next (5) = (10 + 3 + 5)/3
1 classMovingAverage {2 Private:3queue<int>Numsinwindow;4 intwindowsize;5 DoubleLastaverage;6 Public:7 /** Initialize your data structure here.*/8MovingAverage (intsize) {9WindowSize =size;Ten } One A DoubleNextintval) { - if(Numsinwindow.empty ()) { - Numsinwindow.push (val); theLastaverage = (Double) Val; - } - Else if(Numsinwindow.size () <windowsize) { - DoubleTotal = Lastaverage *numsinwindow.size (); + Numsinwindow.push (val); -Lastaverage = (Total + val)/numsinwindow.size (); + } A Else { at DoubleTotal = Lastaverage *numsinwindow.size (); -Total-=Numsinwindow.front (); - Numsinwindow.pop (); - Numsinwindow.push (val); -Lastaverage = (Total + val)/numsinwindow.size (); - } in returnLastaverage; - } to }; + - /** the * Your MovingAverage object would be instantiated and called as such: * * MovingAverage obj = new MovingAverage (size); $ * Double param_1 = Obj.next (val);Panax Notoginseng */
Moving Average from Data Stream--Leetcode