[leetcode]5341. 最后 K 个数的乘积

在这里插入图片描述
在这里插入图片描述

随便写下暴力就过了,美版也是

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);
 */
发布了179 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_40691051/article/details/104350052
今日推荐