栈是什么?
- 栈是一种常用的数据结构,后进先出
- 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];};
栈在前端中的应用