1、栈简介
栈全称为堆栈,是一种后进先出的的数据结构,栈中只有两种基本操作,也就是插入和删除,也就是入栈和出栈操作,栈只有一端可以进行入栈和出栈操作,我们将其称为栈顶,另一端称其为栈底;
但需要切记JS中并没有栈这个数据类型, 需要通过Array数据来模拟,数组中正好也提供了push()和pop()方法,可以实现先进后出的操作。
2、什么情境下使用栈?
简单的来说就是所有有后进先出规律的场景都可以使用栈来解决。例如:
(1)、十进制转二进制
(2)、有效的括号
(3)、函数调用堆栈
3、JS中栈的代码示例
<srcipt>
const stack = []
//入栈
stack.push(1)
stack.push(2)
//出栈
const t1 = stack.pop(1)
const t2 = stack.pop(2)
<srcipt/>
4、LeetCode关于“栈”的算法题
LeetCode:20有效的括号
var isValid = function (s){
if(s.length %2 === 1) {return false}
const stack = []
for(let i = 0;i < s.length; i+=1){
const c = s[i]
if(c === '(' || c === '[' || c === '{'){
stack.push(c)
} else{
const t = stack [stack.length - 1]
if(
t === '(' && c === ')' ||
t === '{' && c === '} ||
t === '[' && c === ']'
){
stack = pop()
}else{
return false
}
}
}
return stack.length === 0
}