1381. Design a Stack With Increment Operation
難度: 中等偏易
設計一個支援元素遞增操作的堆疊。支援以下操作:CustomStack(int maxSize)
:用 maxSize 初始化這個物件,maxSize 是堆疊的最大元素數量。void push(int x)
:如果堆疊未達最大容量,將元素 x 加入堆疊頂部。int pop()
:彈出並回傳堆疊頂部的元素,若堆疊為空則回傳 -1。void increment(int k, int val)
:將堆疊底部的前 k 個元素遞增 val。如果堆疊中元素少於 k 個,則遞增堆疊中的所有元素。
這次就不直接用STL std::stack了~
直接用陣列和一個索引代表下一個要插入的位置。void increment(int k, int val)
直接操作陣列。
class CustomStack
{
private:
int size = 0;
int idx = 0;
vector<int> stack;
public:
CustomStack(int maxSize)
{
this->stack = vector<int>(maxSize);
this->size = maxSize;
this->idx = 0;
}
void push(int x)
{
if (idx < size)
{
stack[idx] = x;
idx++;
}
}
int pop()
{
if (idx > 0)
{
int res = stack[idx - 1];
idx--;
return res;
}
return -1;
}
void increment(int k, int val)
{
for (int i = 0; i < min(k, idx); i++)
stack[i] += val;
}
};
Accepted
34/34 cases passed (32 ms)
Your runtime beats 28.06 % of cpp submissions
Your memory usage beats 66.84 % of cpp submissions (25.9 MB)
Time Submitted | Status | Runtime | Memory | Language |
---|---|---|---|---|
09/30/2024 20:02 | Accepted | 32 ms | 25.9 MB | cpp |