[leetcode] 1352. Product of the Last K Numbers

网友投稿 748 2022-08-22

[leetcode] 1352. Product of the Last K Numbers

[leetcode] 1352. Product of the Last K Numbers

Description

Implement the class ProductOfNumbers that supports two methods:

add(int num)

Adds the number num to the back of the current list of numbers.

getProduct(int k)

Returns the product of the last k numbers in the current list.You can assume that always the current list has at least k numbers.

At any time, the product of any contiguous sequence of numbers will fit into a single 32-bit integer without overflowing. Example 1:

Input["ProductOfNumbers","add","add","add","add","add","getProduct","getProduct","getProduct","add","getProduct"][[],[3],[0],[2],[5],[4],[2],[3],[4],[8],[2]]Output[null,null,null,null,null,null,20,40,0,null,32]ExplanationProductOfNumbers productOfNumbers = new ProductOfNumbers();productOfNumbers.add(3); // [3]productOfNumbers.add(0); // [3,0]productOfNumbers.add(2); // [3,0,2]productOfNumbers.add(5); // [3,0,2,5]productOfNumbers.add(4); // [3,0,2,5,4]productOfNumbers.getProduct(2); // return 20. The product of the last 2 numbers is 5 * 4 = 20productOfNumbers.getProduct(3); // return 40. The product of the last 3 numbers is 2 * 5 * 4 = 40productOfNumbers.getProduct(4); // return 0. The product of the last 4 numbers is 0 * 2 * 5 * 4 = 0productOfNumbers.add(8); // [3,0,2,5,4,8]productOfNumbers.getProduct(2); // return 32. The product of the last 2 numbers is 4 * 8 = 32

Constraints:

There will be at most 40000 operations considering both add and getProduct.0 <= num <= 1001 <= k <= 40000

分析

题目的意思是:实现add操作和最近k个值相乘结果,我一开始暴力破解了一下,发现不行,后面发现需要用一个数组来存放k个数的乘积,只是0有点麻烦,但是0乘以任何数都是0,所以排在0前面的数就不用管了,直接保存0后面数的乘积就行了。如果能够想到这里,就容易实现了。

代码

class ProductOfNumbers: def __init__(self): self.nums=[1] def add(self, num: int) -> None: if(not num): self.nums=[1] else: self.nums.append(self.nums[-1]*num) def getProduct(self, k: int) -> int: if(k>=len(self.nums)): return 0 return self.nums[-1]//self.nums[-k-1] # Your ProductOfNumbers object will be instantiated and called as such:# obj = ProductOfNumbers()# obj.add(num)# param_2 = obj.getProduct(k)

参考文献

​​[LeetCode] Python3 prefix product - Product of the Last K Numbers​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:[leetcode] 1185. Day of the Week
下一篇:[leetcode] 1365. How Many Numbers Are Smaller Than the Current Number
相关文章

 发表评论

暂时没有评论,来抢沙发吧~