您的位置:首页 > 运维架构

LeetCode 1352. Product of the Last K Numbers(维护前缀和)

2020-05-07 04:09 946 查看

题目链接

题意:

维护一个列表,两个操作add和getnum(k),让你输出每次列表最后的k个数的和

思路:

操作很多,大概有4w个operation且k最大为4w,所以暴力查询肯定会T。
这是就需要空间换时间,O(N)O(N)O(N)空间维护一个前缀和,显然如果列表中出现0则前面的即可清0,否则继续维护,最后O(1)O(1)O(1)查询输出结果即可!

class ProductOfNumbers:

def __init__(self):
self._list = [1]
def add(self, num: int) -> None:
if not num:
self._list = [1]
else:
self._list.append(self._list[-1] * num)
return None
def getProduct(self, k: int) -> int:
if len(self._list) <= k:
return 0
else:
return self._list[-1] // self._list[- (k + 1)]
Marcus_Bob 博客专家 原创文章 562获赞 339访问量 29万+ 关注 他的留言板
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: