# 栈
- 栈是抽象的概念,栈可以用「数组」或者「链表」实现。
- 使用「数组」实现的栈,删除和添加元素发生在数组的末尾;
- 使用「链表」实现的栈,删除和添加元素发生在数组的开头;
# 题型一:基本的使用栈解决的问题
下面的问题非常基础,一定需要掌握:
题号 | 链接 | 题解 |
---|---|---|
20 | 有效的括号 (opens new window)(简单) | |
71 | 简化路径 (opens new window)(中等) | |
155 | 最小栈 (opens new window)(简单) | 文字题解 (opens new window) |
225 | 用队列实现栈 (opens new window)(简单) | 文字题解 (opens new window) |
232 | 用栈实现队列 (opens new window)(简单) | 文字题解 (opens new window) |
946 | 946. 验证栈序列 (opens new window)(中等) |
# 练习
题号 | 链接 | 题解 |
---|---|---|
284 | 顶端迭代器 (opens new window)(中等) | |
341 | 扁平化嵌套列表迭代器 (opens new window)(中等) | |
946 | 验证栈序列 (opens new window)(中等) | |
1111 | 有效括号的嵌套深度 (opens new window)(中等) | 文字题解 (opens new window) |
# 题型二:单调栈
单调栈就是普通的栈,在使用的过程中恰好符合了「后进先出」,栈内元素单调的特点。「单调栈」和「单调队列」的问题通常来说很特殊,掌握例题和一些练习就可以了。
说明:
- 第 739 题:推荐阅读 程序员的自我修养:739. Daily Temperatures (opens new window);
# 练习
序号 | 题目 | 题解 |
---|---|---|
496 | 下一个更大元素 I(简单) (opens new window) | 暴力解法、单调栈 (opens new window) |
503 | 下一个更大元素 II(中等) (opens new window) | |
901 | 股票价格跨度(中等) (opens new window) | LeetCode 第 901 题:股票价格跨度(单调栈) (opens new window) |
作者:liweiwei1419 链接:https://suanfa8.com/stack 来源:算法吧 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。