1. 栈是什么?
- 一种先进后出的数据结构;
- JavaScript没有栈的结构;可以用array实现栈的功能
入栈 push(x);
出栈 pop();
const stack = [];
// 入栈
stack.push(1);
stack.push(2);
// 出栈
const item1 = stack.pop();
const item2 = stack.pop();
2. 什么场景下用栈
所有后进先出的结构。
2.1 十进制转换为二进制:最后余数要倒叙输出才是正确二进制;
- 后出来的余数反而要排到前面
- 把余数依次入栈,然后出栈,就可以实现余数倒叙输出。
2.2 判断括号是否合法:左括号进栈,右括号出栈,栈空则合法;
- 越靠后的左括号,对应的右括号越靠前
- 左括号入栈,右括号出栈,最后栈空了就是合法的
2.3 函数调用栈:最后调用的函数,最先执行完;
- 最后调用的函数,最先执行完
- JS解释器使用栈来控制函数调用的顺序
3. leetcode: 20. 有效的括号
valid-parentheses
参考视频: