题目:
算法思想:
维护一个前n项的乘机表,然后后k项的乘积肯定是等于res.get(res.size() - 1) / res.get(res.size() - k - 1);
代码:
class ProductOfNumbers {
List<Integer> res;
public ProductOfNumbers() {
res = new ArrayList<>();
res.add(1);
}
public void add(int num) {
if (num == 0) {
res = new ArrayList<>();
res.add(1);
} else {
res.add(res.get(res.size() -1 ) * num);
}
}
public int getProduct(int k) {
if (k >= res.size()) {
return 0;
} else {
return res.get(res.size() - 1) / res.get(res.size() - k - 1);
}
}
}
/**
* Your ProductOfNumbers object will be instantiated and called as such:
* ProductOfNumbers obj = new ProductOfNumbers();
* obj.add(num);
* int param_2 = obj.getProduct(k);
*/