思路:因为取最小值的时间复杂度要求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.最小栈
最新推荐文章于 2024-07-12 16:27:40 发布