*346. Moving Average from Data Stream

https://leetcode.com/problems/moving-average-from-data-stream/

solution

  • 双端队列

from collections import deque

class MovingAverage: 
    def __init__(self, size: int):
        self.size = size
        self.queue = deque()
        self.sum = 0
    
    def next(self, val: int) -> float:
        if len(self.queue) == self.size:
            self.sum -= self.queue.popleft()
        
        self.queue.append(val)
        self.sum += val
        return self.sum / len(self.queue)

时间复杂度:O(1) 空间复杂度:O(n)

  • 列表

class MovingAverage: 
    def __init__(self, size: int):
        self.size = size
        self.nums = []
        self.sum = 0
    
    def next(self, val: int) -> float:
        self.nums.append(val)
        self.sum += val
        if len(self.nums) > self.size:
            self.sum -= self.nums.pop(0)
        return self.sum / len(self.nums)

时间复杂度:O(n) 空间复杂度:O(n)

Last updated