155. Min Stack

2021-08-10  本文已影响0人  jluemmmm

设计一个支持push、pop、top、在常数时间内检索最小元素的栈。

解法: 数组存储元素的值和小于当前栈中最小元素的值

function last(arr) {
  return arr[arr.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()
 */


class MinStack {
  constructor () {
    this.stack = []
  }
  
  push(x) {
    if (this.stack.length === 0) {
      this.stack.push([x, x]);
      return;
    }
    
    const currentMin = last(this.stack)[1];
    this.stack.push([x, Math.min(currentMin, x)])
  }
  pop() {
    this.stack.pop()
  }
  top() {
    return last(this.stack)[0]
  }
  getMin() {
    return last(this.stack)[1]
  }
}
上一篇 下一篇

猜你喜欢

热点阅读