返回
前端算法必刷题系列之最小栈
前端
2023-12-05 01:55:28
简介
在本文中,我们将讨论如何使用 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 中实现最小栈。我希望您发现本文有用,如果您有任何问题,请随时发表评论。