随便写下暴力就过了,美版也是
class ProductOfNumbers {
vector<int>nums;
public:
ProductOfNumbers() {
}
void add(int num) {
nums.push_back(num);
}
int getProduct(int k) {
typedef long long ll;
ll res = 1;
for(int i = nums.size() - k; i < nums.size(); i++)
{
res *= nums[i];
}
return res;
}
};
/**
* Your ProductOfNumbers object will be instantiated and called as such:
* ProductOfNumbers* obj = new ProductOfNumbers();
* obj->add(num);
* int param_2 = obj->getProduct(k);
*/
前缀积:
class ProductOfNumbers {
int product[40005];
int zeroPos;
int n;
public:
ProductOfNumbers() {
n = 0;
zeroPos = 0;
product[0] = 1;
}
void add(int num) {
n++;
if(num == 0)
{
zeroPos = n;
product[n] = 1;
}
else
{
product[n] = product[n-1]*num;
}
}
int getProduct(int k) {
int i = n - k + 1;
if(i <= zeroPos) return 0;
return product[n]/product[i-1];
}
};
/**
* Your ProductOfNumbers object will be instantiated and called as such:
* ProductOfNumbers* obj = new ProductOfNumbers();
* obj->add(num);
* int param_2 = obj->getProduct(k);
*/