首页 > 代码库 > Moving Average from Data Stream

Moving Average from Data Stream

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(10) = (1 + 10) / 2m.next(3) = (1 + 10 + 3) / 3m.next(5) = (10 + 3 + 5) / 3

 

 1 class MovingAverage { 2 public: 3     /** Initialize your data structure here. */ 4     MovingAverage(int size) { 5         windowSize = size; 6         count = 0; 7         currentSum = 0; 8     } 9     10     double next(int val) {11         value.push_back(val);12         currentSum += val;13         count++;14         if (count > windowSize) {15             currentSum -= value[count - 1 - windowSize];16             return currentSum / windowSize;17         }18         return currentSum / count;19     }20 private:21     int windowSize;22     int count;23     double currentSum;24     vector<int> value;25 };26 27 /**28  * Your MovingAverage object will be instantiated and called as such:29  * MovingAverage obj = new MovingAverage(size);30  * double param_1 = obj.next(val);31  */

 

Moving Average from Data Stream