Const
class MinStack {
private minSt: number[] = [];
private st: number[] = [];
push(val: number): void {
const minSt = this.minSt;
this.st.push(val);
if (minSt.length === 0 || minSt[minSt.length - 1] >= val) {
minSt.push(val);
}
}
pop(): void {
const minSt = this.minSt;
const top = this.st.pop()!;
if (top === minSt[minSt.length - 1]) {
minSt.pop();
}
}
top(): number {
return this.st[this.st.length - 1]!;
}
getMin(): number {
return this.minSt[this.minSt.length - 1]!;
}
}
/**
* Your MinStack object will be instantiated and called as such:
* var obj = new MinStack()
* obj.push(val)
* obj.pop()
* var param_3 = obj.top()
* var param_4 = obj.getMin()
*/
155.最小栈
设计一个支持
push
,pop
,top
操作,并能在常数时间内检索到最小元素的栈。实现
MinStack
类:MinStack()
初始化堆栈对象。void push(int val)
将元素 val 推入堆栈。void pop()
删除堆栈顶部的元素。int top()
获取堆栈顶部的元素。int getMin()
获取堆栈中的最小元素。示例:
输入:
输出:
解释:
提示:
-2^{31} <= val <= 2^{31} - 1
pop
、top
和getMin
操作总是在 非空栈 上调用push
、pop
、top
和getMin
最多被调用3 * 10^4
次