1. 描述
给出一串整数流和窗口大小,计算滑动窗口中所有整数的平均值。
2. 样例
MovingAverage m = new MovingAverage(3); m.next(1) = 1 // 返回 1.00000 m.next(10) = (1 + 10) / 2 // 返回 5.50000 m.next(3) = (1 + 10 + 3) / 3 // 返回 4.66667 m.next(5) = (10 + 3 + 5) / 3 // 返回 6.00000
3. 代码
本题相较于简单级别的其他考察滑动窗口的题目,更加简单。运用list存储元素,pop方法删除每次最前面的一个元素(首元素)
class MovingAverage(object):
"""
@param: size: An integer
"""
def __init__(self, size):
# do intialization if necessary
self.size, self.queue, self.sum = size, [], 0
"""
@param: val: An integer
@return:
"""
def next(self, val):
# write your code here
self.queue.append(val)
self.sum += val
if len(self.queue) > self.size:
self.sum -= self.queue[0]
self.queue.pop(0)
return self.sum / len(self.queue)
# Your MovingAverage object will be instantiated and called as such:
# obj = MovingAverage(size)
# param = obj.next(val)