返回

前端算法必刷题系列之最小栈

前端

简介

在本文中,我们将讨论如何使用 JavaScript 实现最小栈数据结构。最小栈除了基本的栈操作(例如,push 和 pop)之外,它还支持一个名为 min 的操作,该操作返回栈中的最小元素。

实现

为了实现最小栈,我们需要存储两个栈:一个用于存储元素,另一个用于存储当前最小元素。当我们向栈中添加元素时,我们将元素添加到元素栈中,并将该元素与当前最小元素进行比较。如果元素小于当前最小元素,则我们将元素添加到最小栈中。

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

  push(element) {
    this.stack.push(element);
    if (this.minStack.length === 0 || element <= this.minStack[this.minStack.length - 1]) {
      this.minStack.push(element);
    }
  }

  pop() {
    const element = this.stack.pop();
    if (element === this.minStack[this.minStack.length - 1]) {
      this.minStack.pop();
    }
    return element;
  }

  min() {
    return this.minStack[this.minStack.length - 1];
  }
}

用例

const minStack = new MinStack();

minStack.push(5);
minStack.push(3);
minStack.push(2);
minStack.push(1);

console.log(minStack.min()); // 1

minStack.pop();

console.log(minStack.min()); // 1

minStack.pop();

console.log(minStack.min()); // 2

minStack.pop();

console.log(minStack.min()); // 3

结语

最小栈是一种非常有用的数据结构,可以在许多应用程序中使用。在本文中,我们学习了如何在 JavaScript 中实现最小栈。我希望您发现本文有用,如果您有任何问题,请随时发表评论。