栈是什么?
- 栈是一种常用的数据结构,后进先出
- JavaScript 中没有栈,可以用 Array 实现
栈的相关操作
- 入栈:
arr.push('a')
- 出栈:
arr.pop()
移除数组最后一个元素并返回 - 栈顶元素:arr[arr.length - 1]
栈的使用场景及常见的算法题(LeetCode)
- 十进制转二进制
- 后出来的余数反而要排到前面
- 把余数依次入栈,然后再出栈,就可以实现余数倒序输出
- 20.判断字符串括号是否有效
- 682.棒球比赛
- 155.最小栈 - 注意 this 的用法
所以,我们可以创建两个栈,一个栈是主栈 stackstack,另一个是辅助栈 minStackminStack,用于存放对应主栈不同时期的最小值。
var MinStack = function() {
this.x_stack = [];
// 初始化放入无穷大,最小栈的最后一个元素永远最小
this.min_stack = [Infinity];
};
MinStack.prototype.push = function(x) {
this.x_stack.push(x);
// 存入当前栈中最小值,可以重复
this.min_stack.push(Math.min(this.min_stack[this.min_stack.length - 1], x));
};
MinStack.prototype.pop = function() {
this.x_stack.pop();
this.min_stack.pop();
};
MinStack.prototype.top = function() {
return this.x_stack[this.x_stack.length - 1];
};
MinStack.prototype.getMin = function() {
return this.min_stack[this.min_stack.length - 1];
};
栈在前端中的应用