给定一个整数数据流和一个窗口大小,根据该滑动窗口的大小,计算其所有整数的移动平均值。
示例:
MovingAverage m = new MovingAverage(3); m.next(1) = 1 m.next(10) = (1 + 10) / 2 m.next(3) = (1 + 10 + 3) / 3 m.next(5) = (10 + 3 + 5) / 3
思路:
数据流特点是先进先出,所以用队列处理。
from collections import deque
class MovingAverage(object):
def __init__(self, size):
"""
Initialize your data structure here.
:type size: int
"""
self.queue = deque()
self.Max_size = size
def next(self, val):
"""
:type val: int
:rtype: float
"""
self.queue.append(val)
if len(self.queue) > self.Max_size:
self.queue.popleft()
return 1.0 * sum(self.queue) / len(self.queue)