/**
* initialize your data structure here.
*/
var MinStack = function () {
this.stack = [];
this.minStack = [Infinity]; // 使用无穷大,保证第一个值入栈时,一定会被存入辅助栈
};
/**
* @param {number} x
* @return {void}
*/
MinStack.prototype.push = function (x) {
this.stack.push(x);
// 每次存入一个值时,都将当前最小值与存入的值进行比较,保存较小的值。
// 可以理解为,缓存了每次入栈操作时,当前栈的最小值。
this.minStack.push(Math.min(this.minStack[this.minStack.length - 1], x));
};
/**
* @return {void}
*/
MinStack.prototype.pop = function () {
this.stack.pop();
this.minStack.pop();
};
/**
* @return {number}
*/
MinStack.prototype.top = function () {
return this.stack[this.stack.length - 1];
};
/**
* @return {number}
*/
MinStack.prototype.getMin = function () {
return this.minStack[this.minStack.length - 1];
};
评论