思路:因为取最小值的时间复杂度要求O(1),所以需要一个辅助栈,栈顶存放当前栈中元素最小值
var MinStack = function() {
this.x_stack = [];
this.min_stack = [Infinity];
};
/**
* @param {number} val
* @return {void}
*/
MinStack.prototype.push = function(val) {
this.x_stack.push(x);
//js中数组下标为负数不报错,返回undefined,undefined在min中与任何数比较都是false,
//这样就完成了首次比较的添加
this.min_stack.push(Math.min(this.min_stack[this.min_stack.length-1], x));
};
/**
* @return {void}
*/
MinStack.prototype.pop = function() {
this.x_stack.pop();
this.min_stack.pop();
};
/**
* @return {number}
*/
MinStack.prototype.top = function() {
return this.x_stack[this.x_stack.length-1];
};
/**
* @return {number}
*/
MinStack.prototype.getMin = function() {
return this.min_stack[this.min_stack.length-1];
};
155.最小栈
最新推荐文章于 2025-12-15 15:15:21 发布
本文介绍了如何使用JavaScript创建一个名为`MinStack`的数据结构,它能在常数时间内获取栈中的最小值。通过辅助栈存储最小值,实现了`push`、`pop`、`top`和`getMin`方法,保持了高效性能。
899

被折叠的 条评论
为什么被折叠?



