跳转至

5357.设计一个支持增量操作的栈 (Medium)*

题目描述*

请你设计一个支持下述操作的栈。

实现自定义栈类 CustomStack :

  • CustomStack(int maxSize):用 maxSize 初始化对象,maxSize 是栈中最多能容纳的元素数量,栈在增长到 maxSize 之后则不支持 push 操作。
  • void push(int x):如果栈还未增长到 maxSize ,就将 x 添加到栈顶。
  • int pop():返回栈顶的值,或栈为空时返回 -1 。
  • void inc(int k, int val):栈底的 k 个元素的值都增加 val 。如果栈中元素总数小于 k ,则栈中的所有元素都增加 val 。

代码*

这道题我做的着实脑瘫,直接用数组就完事了。我还整了个双端队列,然后从后边 pop 出 k 个再放回去,哈哈哈,太菜了。

class CustomStack {
private:
    vector<int> v;
    int maxSize;
public:
    CustomStack(int _maxSize) {
        v = vector<int>();
        maxSize = _maxSize;
    }

    void push(int x) {
        if(v.size() < maxSize) {
            v.push_back(x);
        }
    }

    int pop() {
        if(v.empty()) {
            return -1;
        }
        int res = v.back();
        v.pop_back();
        return res;
    }

    void increment(int k, int val) {
        for(int i = 0; i < k && i < v.size(); i++) {
            v[i] += val;
        }
    }
};

最后更新: July 23, 2022