LeetCode 346. Moving Average from Data Stream

Post by ailswan Dec. 13, 2023

346. Moving Average from 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)