栈
特点:后进先出。
使用数组模拟栈
JavaScript中没有栈,但是可以用Array实现栈的所有功能。
const stack = [];// 入栈stack.push(1);stack.push(2);// 出栈const item1 = stack.pop();const item2 = stack.pop();
栈的结构很简单,我们重点关注它的后进先出的特性。
栈的应用场景
需要先进先出的场景:
比如:
十进制转二进制,判断字符串的括号是否有效,函数调用堆栈……
这三个场景,是典型的后进先出的场景。
算法题
LeetCode:20.有效的括号
分析时间复杂度和空间复杂度
代码中只有一个for循环,
所有操作都是O(1)的复杂度,
所以时间复杂度是O(n)。n就是s.length。
创建了一个stack数组,里面最极端的情况下会存储所有的字符串,占用n个内存单元,所以
空间复杂度是O(n), n就是s.length
继续优化
使用新的数据结构**-“字典”来优化。**
后面讲到了,再来优化。
