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