Algorithms study cheatsheets
Coding interview 的 Stack cheatsheet
Stack 学习指南,包含练习题、技巧、时间复杂度与推荐资源
Introduction
Stack 是一种抽象数据类型,支持 push(把元素压到栈顶)和 pop(移除并返回最近加入的元素,也就是栈顶)。Stack 可用 array 或 singly linked list 实现。
这种行为叫 LIFO(last in, first out)。名字来自现实中物品“叠在一起”的形象。
Stack 是支持嵌套/递归调用的重要结构,也是 DFS 的基础。DFS 可以用 recursion,也可以用手动 stack。
Learning resources
- Readings
- Stacks and Overflows, basecs
- Videos
- Stacks, University of California San Diego
Implementations
| Language | API |
|---|---|
| C++ | std::stack |
| Java | java.util.Stack |
| Python | 用 List 模拟 |
| JavaScript | 用 Array 模拟 |
Time complexity
| Operation | Big-O |
|---|---|
| Top/Peek | O(1) |
| Push | O(1) |
| Pop | O(1) |
| isEmpty | O(1) |
| Search | O(n) |
Corner cases
- Empty stack(从空栈 pop)
- 只有 1 个元素
- 只有 2 个元素
Essential questions
该 topic 必练题。
Recommended practice questions
在掌握基础后推荐练习。
- Implement Stack using Queues
- Min Stack
- Asteroid Collision
- Evaluate Reverse Polish Notation
- Basic Calculator
- Basic Calculator II
- Daily Temperatures
- Trapping Rain Water
- Largest Rectangle in Histogram