原题链接
思路
题目中已经确切的告诉了我们,数组中会放入多少个元素,这种情况并且只有添加操作,这种情况之下,使用数组模拟效率会更高一点。
代码
用数组模拟栈,击败100%
class CustomStack {
private int[] stack;
private int tt;
public CustomStack(int maxSize) {
stack = new int[maxSize];
}
public void push(int x) {
if(tt == stack.length) return;
stack[tt++] = x;
}
public int pop() {
if(tt == 0) return -1;
return stack[--tt];
}
public void increment(int k, int val) {
for(int i = 0; i < k && i < tt; i++) {
stack[i] += val;
}
}
}
用数组来模拟栈
用一个数组来表示栈结构,并且加一个索引来方便操作,这里的 tt 指向的是 下一次要放的位置
const int N = 10010;
int stack[N];
int tt;
// 向栈中添加元素
stack[tt++] = x;
// 弹出栈顶元素
--tt;
// 判断栈是否是空
tt == 0;
// 栈顶
int top = tt;
stack[top--];