LeetCode热题100- 最小栈【JavaScript讲解】
“日日行,不怕千万里;常常做,不怕千万事。” —— 《格言联璧·处事》
oi!!栈的知识点在这里!!!点击跳转!!!
最小栈讲解目录:
- 题目:
- 题目实例解释:
- 题解:
- js代码解析:
- 通过:
题目:
题目实例解释:
题解:
- Stack增加使用 push() 方法
- Stack删除使用 pop() 方法
- 所以push和pop方法就有了,top方法就是求栈顶,即表尾的数。
- 主要是getMain如何求解,我们可以每次将最小数和前一个数作比较,哪个数字小就存储哪个数字,这样每次取出都是最小数了。
js代码解析:
var MinStack = function() {
this.stack = [];
this.min_stack = [Infinity];
};
/**
* @param {number} val
* @return {void}
*/
MinStack.prototype.push = function(val) {
this.stack.push(val);
this.min_stack.push(Math.min(this.min_stack.at(-1),val));
};
/**
* @return {void}
*/
MinStack.prototype.pop = function() {
this.stack.pop();
this.min_stack.pop();
};
/**
* @return {number}
*/
MinStack.prototype.top = function() {
return this.stack.at(-1);
};
/**
* @return {number}
*/
MinStack.prototype.getMin = function() {
return this.min_stack.at(-1);
};
/**
* Your MinStack object will be instantiated and called as such:
* var obj = new MinStack()
* obj.push(val)
* obj.pop()
* var param_3 = obj.top()
* var param_4 = obj.getMin()
*/