我通过对LeetCode中“栈”部分的免费题目进行归类、整理,归纳出如下推荐的刷题顺序。在刷题顺序的整理中,我主要遵循了如下规则:
- 在题目分组方面,除综合题外,每组题目的技巧、方法均相似,方便统一学习;
- 在各组题目的顺序方面,总体来说为由易到难,后一组题目比前一组略难一些,方便大家循序渐进;
- 在每组题目的顺序方面,均为由易到难(难度为我依据自己的理解,对LeetCode给出的难度进行微调的结果),方便大家循序渐进。
LeetCode栈部分刷题顺序
第1组:栈的设计
- 0155:【简单】设计能够在常数时间内检索到最小元素的栈
- 0225:【简单】用队列实现栈
- 0232:【简单】用栈实现队列
- 1381:【中等】设计一个支持增量操作的栈
- 0895:【困难】pop返回栈中最靠近栈顶的最大频率值的栈
第3组:栈的基本操作
- 0682:【简单】棒球比赛计分
- 1441:【简单】生成用栈构建指定数组的栈操作列表
- 0856:【简单】依据指定规则计算平衡括号字符串的分数
- 1190:【中等】反转字符串中每对括号间的子串
- 0150:【中等】逆波兰表达式求值
- 0636:【中等】计算函数在CPU中的独占时间
- 0735:【中等】直线上的不同质量的行星碰撞
- 0946:【中等】依据push和pop序列验证是否可能是空栈操作的结果
- 0402:【中等】移除掉K位数字使剩余数字组成的整数最小
第3组:栈用于树的遍历
- 0094:【中等】实现二叉树的中序遍历
- 0144:【中等】实现二叉树的前序遍历
- 0145:【困难】实现二叉树的后序遍历
- 0173:【中等】设计二叉搜索树的迭代器
- 0341:【中等】设计扁平化嵌套列表迭代器
第4组:栈用于处理字符串
- 0020:【简单】判断字符串中的括号是否匹配
- 0844:【简单】比较包含退格字符的字符串
- 1047:【简单】删除字符串中的所有相邻重复项直至没有相邻重复项
- 0071:【中等】简化Unix文件的绝对路径
- 0921:【中等】使字符串括号有效最少需要添加多少个括号
- 1003:【中等】检查字符串是否由指定字符串拼接产生
- 1209:【中等】删除字符串中的所有相邻定长重复项
- 1249:【中等】移除字符串中最少的无效括号使剩余的括号成对
- 0394:【中等】包含倍数信息的字符串解码
- 0726:【困难】统计化学表达式中各个原子的数量
- 0591:【困难】DOM标签合法性验证检查器
第5组:单调栈解法
- 0496:【简单】寻找列表中的下一个更大元素
- 0503:【中等】循环寻找列表中的下一个更大元素
- 0739:【中等】计算想要观测到更高气温所需等待的天数
- 0901:【中等】计算股票价格跨度(今日前连续小于或等于今日价格天数)
- 1019:【中等】生成链表中的下一个更大结点的列表
- 0456:【中等】判断列表中是否有1-3-2模式的子序列
- 0907:【中等】计算数组的所有子数组的最小值之和
- 1124:【中等】大于特定值的项数超过小于特定值项数的最长连续子串
- 1130:【中等】中序遍历的叶值的最小代价生成树
- 0042:【困难】根据柱子的高度列表,计算下雨后能接多少雨水
- 0084:【困难】根据柱状图高度列表,计算柱状图中最大的矩形
- 0085:【困难】根据二维二进制矩阵,找出只包含1的最大矩形
第6组:应用题
-
0224:【困难】带括号的正负二则计算器实现
-
0316:【困难】去除字符串中的重复字母并保证返回结果的字典序最小
-
0975:【困难】数组里的奇偶跳游戏
-
0770:【困难】处理未知数的多项式计算器
















