Search
K
JavaScript
TypeScript
HTML & CSS
网络
浏览器
框架
工程化
算法
手写代码
场景题
Theme
Menu
ON THIS PAGE
#
栈 / 队列 / 哈希
这一分类以栈、队列和哈希表的典型题为主,同时收录几道常见的字符串、回溯和数位计数题。
#
算法模板
深度搜索思路
:DFS 核心模板、内外循环的分工与访问标记。
回溯算法模板
:决策树、选择、递归、撤销与剪枝。
题目
核心方法
关键点
1. 两数之和
哈希表
用空间换时间,保存已遍历元素
20. 有效的括号
栈
最近出现的左括号最先匹配
907. 子数组的最小值之和
单调栈 + 贡献法
计算每个元素作为最小值时覆盖的子数组数量
232. 用栈实现队列
双栈
输入栈负责写入,输出栈负责读取
146. LRU 缓存
哈希表 + 双向链表
同时实现
O(1)
定位、移动和淘汰
415. 字符串相加
双指针 + 模拟
从低位向高位逐位相加
165. 比较版本号
双指针 / 分割
逐段比较修订号
46. 全排列
回溯
路径、选择列表、撤销选择
902. 最大为 N 的数字组合
数位计数
统计短位数,再处理与
n
等长的前缀
#
三种数据结构的判断信号
需要“后进先出”、括号匹配、表达式求值或单调关系时,考虑栈。
需要“先进先出”、层序遍历或任务排队时,考虑队列。
需要快速判断是否出现过、建立值到位置的映射或
O(1)
定位节点时,考虑哈希表。
数据结构只是工具。做题时应先识别问题需要维护的状态和操作复杂度,再决定使用哪种结构。