題目出處
642 · Moving Average from Data Stream
難度
easy
個人範例程式碼
class MovingAverage(object):
"""
@param: size: An integer
"""
def __init__(self, size):
# do intialization if necessary
self.size = size
self.queue = collections.deque([])
self.sum = 0.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.popleft()
return self.sum/len(self.queue)
# Your MovingAverage object will be instantiated and called as such:
# obj = MovingAverage(size)
# param = obj.next(val)
算法說明
Data Stream 的題型,基本上看到 data stream 就要先有意識到,
現在我們要設計的是一個「動態」的數據結構,
也就是說輸入的資料不會是「一次性的」,而是「連續性的」
有這個概念之後我們就可以開始來設計了,
這題還算簡單,不需要講太多
最近在練習程式碼本身就可以自解釋的 Coding style,可以嘗試直接閱讀程式碼理解
input handling
x (題目沒有特別要求)
Boundary conditions
因為不是一次性操作,因此沒有邊界限制,
而動態的操作要注意「允許儲存的上限 = size」