构造问题:栈&队列
- 155 最小栈:minstack保留和栈相同长度的最小元素
- 225 用队列实现栈:队列遍历不改变顺序
- 232 用栈实现队列:栈会改变顺序需要两个存储
两两匹配问题
- 20 有效的括号
- 32 最长有效括号:通过右括号位置隔断每个有效括号子串
- 150 逆波兰表达式求值
- 394 字符串解码
- 1047 删除字符串中的所有相邻重复项
DFS搜索
- 79 单词搜索
- 130 被围绕的区域
- 200 岛屿的数量
- 241 位运算表达式设计优先级:DFS深度搜索+cache优化
- 395 至少有k个重复字符的最长子串
- 733 图像渲染: 注意通过修改当前值避免循环递归
单调栈/队列
- 42 接雨水:单调栈,需要左中右三个元素来计算雨水
- 239 滑动窗口最大值:滑动窗口+单调队列
- 264 丑数II:优先队列
- 316 去除重复字母:单调栈+贪心,对越高的位置优先保留更大/更小
- 402 移掉K位数字:单调栈+贪心,对越高的位置优先保留更大/更小
- 496 下一个更大元素 I:单调栈,哈希存储
- 503 下一个更大元素 II:单调栈, 数组存储(数组有重复),循环用遍历2*len的方式实现
- 1438 绝对差不超过限制的最长连续子数组: 滑动窗口+最大最小两个单调队列