In this post, we are going to discuss leetcode 1352 — Product of the Last K Numbers, which is recently asked in Google, Uber, and Amazon interviews.
Problem Analysis
Design an algorithm that accepts a stream of integers and retrieves the product of the last
k
integers of the stream.Implement the
ProductOfNumbers
class:
1.ProductOfNumbers()
Initializes the object with an empty stream.
2.void add(int num)
Appends the integernum
to the stream.
3.int getProduct(int k)
Returns the product of the lastk
numbers in the current list. You can assume that always the current list has at leastk
numbers.The test cases are generated so that, 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] Explanation
ProductOfNumbers 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 = 20…