解题思路:
1.正常思路,创建vector , push_back , 计算最后k个积 , 但是超时,时间主要花费在计算k个积上面。
2.官方题解
复杂度分析
时间复杂度:add 和 getProduct 复杂度均为 O(1)。
空间复杂度:O(n),需要额外提供一个辅助数组。
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/product-of-the-last-k-numbers/solution/zui-hou-k-ge-shu-de-cheng-ji-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
class ProductOfNumbers {
public:
ProductOfNumbers()
{
v.clear();
v.reserve(40000);
v.push_back(1); //初始化给一个1
}
void add(int num)
{
if(num)
{
v.push_back(v[v.size()-1] * num);
}
else
{
v.clear();
v.push_back(1);
}
}
int getProduct(int k)
{
int sz = v.size();
if(k >= sz)
return 0;
return v[sz-1]/v[v.size()-1-k];
}
private:
vector<int> v;
};