Skip to content

155. 最小栈

题目链接:155.最小栈

这题难点在于 min 函数的时间复杂度需要是 O(1)。思路是用一个辅助栈记录每次栈元素变化的时候,栈中的最小值。

ts
class MinStack {
  arr: number[] = []
  minArr: number[] = []

  constructor() {}

  push(val: number): void {
    this.arr.push(val)
    if (this.minArr.length === 0) {
      this.minArr.push(val)
    } else {
      this.minArr.push(Math.min(this.minArr[this.minArr.length - 1], val))
    }
  }

  pop(): void {
    this.arr.pop()
    this.minArr.pop()
  }

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

  getMin(): number {
    return this.minArr[this.minArr.length - 1]
  }
}