【容器适配器/栈队列】leetcode刷题路线(持续更新)
Why:为什么要使用栈/队列?
- 当某个数据集合只设计在一端插入和删除数据,并且满足后进先出,先进后出的特性,就应该首选“栈”这种数据结构
- 了解栈,可以更好的理解软件函数调用、编译器表达式求值、括号匹配等场景的原理
- 对于大部分资源有限的场景、当没有空闲资源时,大多可以通过“队列”来实现请求排队
What:栈/队列主要包含哪些内容
-
后进先出,先进后出,是栈
-
先进先出,是队列
-
栈与队列都是一种“操作受限”的线性表
-
循环队列、阻塞队列(控制生产与消费)、和并发队列(线程安全的队列)
How:通过leetcode的栈/队列题库的相关练习掌握
- 232.用栈实现队列
- 225. 用队列实现栈
- 20.有效的括号
- 1047. 删除字符串中的所有相邻重复项
- 150.逆波兰表达式求值
- 239.滑动窗口最大值
- 347.前 K 个高频元素
- 32.最长有效括号
- 42.接雨水
- 71.简化路径
- 84.柱状图中最大的矩形
- 85.最大矩形
- 94.二叉树的中序遍历
- 114.二叉树展开为链表
- 143.重排链表
- 144.二叉树的前序遍历
- 145.二叉树的后序遍历
- 155.最小栈
- 173.二叉搜索树迭代器
- 224.基本计算器
- 225.用队列实现栈
- 227.基本计算器II
- 232.用栈实现队列
- 234.回文链表
- 387.字符串中的第一个唯一字符
- 589.N叉树的前序遍历
- 590.N叉树的后序遍历
- 622. 设计循环队列
- 641.设计循环双端队列
- 844.比较含退格的字符串
- 918.环形子数组的最大和
- 1249.移除无效的括号
- 1823.找出游戏的获胜者
- 2071.你可以安排的最多任务数目
- 2073.买票需要的时间
- 2030含特定字母的最小子序列
- 剑指Offer 09.用两个栈实现队列
- 剑指 Offer 30. 包含min函数的栈
参考资料
【1】leetocde题库-栈
【2】leetocde题库-队列
【3】数据结构与算法之美:栈、队列
【4】代碼随想录