346. Moving Average from Data Stream
Design, Queue, Array, Data Stream ·Problem Statement
link: LeetCode.cn LeetCode
Given a stream of integers and a window size, calculate the moving average of all integers in the sliding window.
Implement the MovingAverage class:
MovingAverage(int size) Initializes the object with the size of the window size. double next(int val) Returns the moving average of the last size values of the stream.
Example:
Input: ["MovingAverage", "next", "next", "next", "next"][[3], [1], [10], [3], [5]]
Output: [null, 1.0, 5.5, 4.66667, 6.0]
Solution Approach
Algorithm
Implement
class Solution:
def __init__(self, size: int):
self.size = size
self.sum = 0
self.q = deque()
def next(self, val: int) -> float:
if len(self.q) == self.size:
self.sum -= self.q.popleft()
self.sum += val
self.q.append(val)
return self.sum / len(self.q)