Skip to main content

2023-9-20

9-20

题号155. 最小栈

题目 设计一个支持 pushpoptop 操作,并能在常数时间内检索到最小元素的栈。

实现 MinStack 类:

  • MinStack() 初始化堆栈对象。
  • void push(int val) 将元素val推入堆栈。
  • void pop() 删除堆栈顶部的元素。
  • int top() 获取堆栈顶部的元素。
  • int getMin() 获取堆栈中的最小元素。
class MinStack {
private stack: number[];
private minStack: number[];

constructor() {
this.stack = [];
this.minStack = [];
}

push(x: number): void {
this.stack.push(x);

// 如果最小栈为空或者 x 小于等于最小栈的栈顶元素,将 x 推入最小栈
if (this.minStack.length === 0 || x <= this.minStack[this.minStack.length - 1]) {
this.minStack.push(x);
}
}

pop(): void {
const popped = this.stack.pop();
if (popped === this.minStack[this.minStack.length - 1]) {
this.minStack.pop();
}
}

top(): number {
return this.stack[this.stack.length - 1];
}

getMin(): number {
return this.minStack[this.minStack.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()
*/