刷数据结构题,不建议只按难度从 Easy 刷到 Hard。更稳的方式是按结构建立题型:数组看下标和区间,链表看指针,栈队列看顺序约束,树图看遍历,堆看优先级,哈希表看快速定位。
下面的题单控制在面试高频和模板代表题范围内。每类先做“必刷题”,再做“进阶题”。题目做完后,至少写下复杂度、边界样例和这题属于哪个模板。
怎么用这份题单
数据结构题不要只记结论。每刷一类题,先回到对应结构看一次“存储方式、核心操作、复杂度”,再动手写题。这样面试官追问 Java 集合、Redis、MySQL 索引或缓存场景时,答案不会只停在题解层面。
结构先读什么刷题时重点看什么数组、链表、栈队列线性数据结构详解、双指针与滑动窗口下标、指针更新、入栈出栈时机哈希表哈希表面试题总结key 的设计、计数时机、冲突和扩容树和图树结构详解、图详解、DFS 与 BFS递归返回值、访问标记、BFS 层数统计堆和 Top K堆详解、Top K 问题面试题总结堆大小、比较器、数据流场景Trie 和并查集Trie 前缀树面试题总结、并查集面试题总结节点结构、结束标记、路径压缩、连通判断LRULRU 缓存面试题总结哈希表和双向链表如何保持 O(1)
结构先读什么刷题时重点看什么
结构
先读什么
刷题时重点看什么
数组、链表、栈队列线性数据结构详解、双指针与滑动窗口下标、指针更新、入栈出栈时机
数组、链表、栈队列
线性数据结构详解、双指针与滑动窗口
下标、指针更新、入栈出栈时机
哈希表哈希表面试题总结key 的设计、计数时机、冲突和扩容
哈希表
哈希表面试题总结
key 的设计、计数时机、冲突和扩容
树和图树结构详解、图详解、DFS 与 BFS递归返回值、访问标记、BFS 层数统计
树和图
树结构详解、图详解、DFS 与 BFS
递归返回值、访问标记、BFS 层数统计
堆和 Top K堆详解、Top K 问题面试题总结堆大小、比较器、数据流场景
堆和 Top K
堆详解、Top K 问题面试题总结
堆大小、比较器、数据流场景
Trie 和并查集Trie 前缀树面试题总结、并查集面试题总结节点结构、结束标记、路径压缩、连通判断
Trie 和并查集
Trie 前缀树面试题总结、并查集面试题总结
节点结构、结束标记、路径压缩、连通判断
LRULRU 缓存面试题总结哈希表和双向链表如何保持 O(1)
LRU
LRU 缓存面试题总结
哈希表和双向链表如何保持 O(1)
数组
题型必刷题进阶题面试价值复盘重点二分查找704. 二分查找34. 在排序数组中查找元素的第一个和最后一个位置考循环条件和边界left <= right、左右边界更新原地修改26. 删除有序数组中的重复项80. 删除有序数组中的重复项 II考双指针写法慢指针含义、覆盖时机双指针977. 有序数组的平方15. 三数之和高频数组题排序后去重、左右指针移动前缀和303. 区域和检索 - 数组不可变560. 和为 K 的子数组子数组题入口前缀和含义、哈希表计数
题型必刷题进阶题面试价值复盘重点
题型
必刷题
进阶题
面试价值
复盘重点
二分查找704. 二分查找34. 在排序数组中查找元素的第一个和最后一个位置考循环条件和边界left <= right、左右边界更新
二分查找
- 二分查找
- 在排序数组中查找元素的第一个和最后一个位置
考循环条件和边界
left <= right、左右边界更新
left <= right
原地修改26. 删除有序数组中的重复项80. 删除有序数组中的重复项 II考双指针写法慢指针含义、覆盖时机
原地修改
- 删除有序数组中的重复项
- 删除有序数组中的重复项 II
考双指针写法
慢指针含义、覆盖时机
双指针977. 有序数组的平方15. 三数之和高频数组题排序后去重、左右指针移动
双指针
- 有序数组的平方
- 三数之和
高频数组题
排序后去重、左右指针移动
前缀和303. 区域和检索 - 数组不可变560. 和为 K 的子数组子数组题入口前缀和含义、哈希表计数
前缀和
- 区域和检索 - 数组不可变
- 和为 K 的子数组
子数组题入口
前缀和含义、哈希表计数
链表
题型必刷题进阶题面试价值复盘重点基础操作707. 设计链表24. 两两交换链表中的节点考节点操作基本功虚拟头节点、插入删除顺序链表反转206. 反转链表92. 反转链表 II高频手写题prev、cur、next 的更新顺序快慢指针141. 环形链表142. 环形链表 II常见追问题相遇点和入环点推导删除节点19. 删除链表的倒数第 N 个结点61. 旋转链表考边界处理链表长度、头节点被删
题型必刷题进阶题面试价值复盘重点
题型
必刷题
进阶题
面试价值
复盘重点
基础操作707. 设计链表24. 两两交换链表中的节点考节点操作基本功虚拟头节点、插入删除顺序
基础操作
- 设计链表
- 两两交换链表中的节点
考节点操作基本功
虚拟头节点、插入删除顺序
链表反转206. 反转链表92. 反转链表 II高频手写题prev、cur、next 的更新顺序
链表反转
- 反转链表
- 反转链表 II
高频手写题
prev、cur、next 的更新顺序
prev
cur
next
快慢指针141. 环形链表142. 环形链表 II常见追问题相遇点和入环点推导
快慢指针
- 环形链表
- 环形链表 II
常见追问题
相遇点和入环点推导
删除节点19. 删除链表的倒数第 N 个结点61. 旋转链表考边界处理链表长度、头节点被删
删除节点
- 删除链表的倒数第 N 个结点
- 旋转链表
考边界处理
链表长度、头节点被删
栈与队列
题型必刷题进阶题面试价值复盘重点结构模拟232. 用栈实现队列225. 用队列实现栈考结构理解入队栈、出队栈职责括号匹配20. 有效的括号394. 字符串解码字符串栈题入口什么时候入栈、什么时候弹栈单调栈739. 每日温度84. 柱状图中最大的矩形中高频题型栈中维护递增还是递减单调队列239. 滑动窗口最大值862. 和至少为 K 的最短子数组Hard 题常见模板队首过期、队尾维护单调性
题型必刷题进阶题面试价值复盘重点
题型
必刷题
进阶题
面试价值
复盘重点
结构模拟232. 用栈实现队列225. 用队列实现栈考结构理解入队栈、出队栈职责
结构模拟
- 用栈实现队列
- 用队列实现栈
考结构理解
入队栈、出队栈职责
括号匹配20. 有效的括号394. 字符串解码字符串栈题入口什么时候入栈、什么时候弹栈
括号匹配
- 有效的括号
- 字符串解码
字符串栈题入口
什么时候入栈、什么时候弹栈
单调栈739. 每日温度84. 柱状图中最大的矩形中高频题型栈中维护递增还是递减
单调栈
- 每日温度
- 柱状图中最大的矩形
中高频题型
栈中维护递增还是递减
单调队列239. 滑动窗口最大值862. 和至少为 K 的最短子数组Hard 题常见模板队首过期、队尾维护单调性
单调队列
- 滑动窗口最大值
- 和至少为 K 的最短子数组
Hard 题常见模板
队首过期、队尾维护单调性
哈希表
题型必刷题进阶题面试价值复盘重点快速查找1. 两数之和49. 字母异位词分组哈希表入门key 的设计计数242. 有效的字母异位词347. 前 K 个高频元素高频统计题数组计数和 Map 计数怎么选前缀和 + 哈希560. 和为 K 的子数组974. 和可被 K 整除的子数组子数组题常考先查再加,避免把当前前缀算进去缓存结构146. LRU 缓存460. LFU 缓存手写设计题哈希表和双向链表协作
题型必刷题进阶题面试价值复盘重点
题型
必刷题
进阶题
面试价值
复盘重点
快速查找1. 两数之和49. 字母异位词分组哈希表入门key 的设计
快速查找
- 两数之和
- 字母异位词分组
哈希表入门
key 的设计
计数242. 有效的字母异位词347. 前 K 个高频元素高频统计题数组计数和 Map 计数怎么选
计数
- 有效的字母异位词
- 前 K 个高频元素
高频统计题
数组计数和 Map 计数怎么选
前缀和 + 哈希560. 和为 K 的子数组974. 和可被 K 整除的子数组子数组题常考先查再加,避免把当前前缀算进去
前缀和 + 哈希
- 和为 K 的子数组
- 和可被 K 整除的子数组
子数组题常考
先查再加,避免把当前前缀算进去
缓存结构146. LRU 缓存460. LFU 缓存手写设计题哈希表和双向链表协作
缓存结构
- LRU 缓存
- LFU 缓存
手写设计题
哈希表和双向链表协作
二叉树
题型必刷题进阶题面试价值复盘重点遍历144. 二叉树的前序遍历102. 二叉树的层序遍历树题基础递归边界、队列层数路径问题112. 路径总和124. 二叉树中的最大路径和DFS 高频返回值和全局答案分开构造树105. 从前序与中序遍历序列构造二叉树106. 从中序与后序遍历序列构造二叉树考递归区间下标范围别写乱最近公共祖先236. 二叉树的最近公共祖先235. 二叉搜索树的最近公共祖先高频追问普通树和 BST 的解法差异
题型必刷题进阶题面试价值复盘重点
题型
必刷题
进阶题
面试价值
复盘重点
遍历144. 二叉树的前序遍历102. 二叉树的层序遍历树题基础递归边界、队列层数
遍历
- 二叉树的前序遍历
- 二叉树的层序遍历
树题基础
递归边界、队列层数
路径问题112. 路径总和124. 二叉树中的最大路径和DFS 高频返回值和全局答案分开
路径问题
- 路径总和
- 二叉树中的最大路径和
DFS 高频
返回值和全局答案分开
构造树105. 从前序与中序遍历序列构造二叉树106. 从中序与后序遍历序列构造二叉树考递归区间下标范围别写乱
构造树
- 从前序与中序遍历序列构造二叉树
- 从中序与后序遍历序列构造二叉树
考递归区间
下标范围别写乱
最近公共祖先236. 二叉树的最近公共祖先235. 二叉搜索树的最近公共祖先高频追问普通树和 BST 的解法差异
最近公共祖先
- 二叉树的最近公共祖先
- 二叉搜索树的最近公共祖先
高频追问
普通树和 BST 的解法差异
图
题型必刷题进阶题面试价值复盘重点网格 DFS/BFS200. 岛屿数量695. 岛屿的最大面积图搜索入门越界、访问标记拓扑排序207. 课程表210. 课程表 II依赖关系题入度数组、队列最短路径994. 腐烂的橘子127. 单词接龙BFS 层序应用每层步数统计连通性547. 省份数量684. 冗余连接并查集入口find 和 union 模板
题型必刷题进阶题面试价值复盘重点
题型
必刷题
进阶题
面试价值
复盘重点
网格 DFS/BFS200. 岛屿数量695. 岛屿的最大面积图搜索入门越界、访问标记
网格 DFS/BFS
- 岛屿数量
- 岛屿的最大面积
图搜索入门
越界、访问标记
拓扑排序207. 课程表210. 课程表 II依赖关系题入度数组、队列
拓扑排序
- 课程表
- 课程表 II
依赖关系题
入度数组、队列
最短路径994. 腐烂的橘子127. 单词接龙BFS 层序应用每层步数统计
最短路径
- 腐烂的橘子
- 单词接龙
BFS 层序应用
每层步数统计
连通性547. 省份数量684. 冗余连接并查集入口find 和 union 模板
连通性
- 省份数量
- 冗余连接
并查集入口
find 和 union 模板
find
union
堆
题型必刷题进阶题面试价值复盘重点第 K 大215. 数组中的第 K 个最大元素703. 数据流中的第 K 大元素Top K 高频小顶堆大小保持为 K频率统计347. 前 K 个高频元素692. 前 K 个高频单词哈希表 + 堆比较器写法双堆295. 数据流的中位数480. 滑动窗口中位数进阶设计题大顶堆和小顶堆平衡
题型必刷题进阶题面试价值复盘重点
题型
必刷题
进阶题
面试价值
复盘重点
第 K 大215. 数组中的第 K 个最大元素703. 数据流中的第 K 大元素Top K 高频小顶堆大小保持为 K
第 K 大
- 数组中的第 K 个最大元素
- 数据流中的第 K 大元素
Top K 高频
小顶堆大小保持为 K
频率统计347. 前 K 个高频元素692. 前 K 个高频单词哈希表 + 堆比较器写法
频率统计
- 前 K 个高频元素
- 前 K 个高频单词
哈希表 + 堆
比较器写法
双堆295. 数据流的中位数480. 滑动窗口中位数进阶设计题大顶堆和小顶堆平衡
双堆
- 数据流的中位数
- 滑动窗口中位数
进阶设计题
大顶堆和小顶堆平衡
Trie 与并查集
结构必刷题进阶题面试价值复盘重点Trie208. 实现 Trie211. 添加与搜索单词字符串集合题节点结构、结束标记Trie + DFS212. 单词搜索 II648. 单词替换中高频题前缀剪枝并查集547. 省份数量1319. 连通网络的操作次数连通性模板路径压缩并查集判环684. 冗余连接990. 等式方程的可满足性图题常见变体先合并等式,再检查冲突
结构必刷题进阶题面试价值复盘重点
结构
必刷题
进阶题
面试价值
复盘重点
Trie208. 实现 Trie211. 添加与搜索单词字符串集合题节点结构、结束标记
Trie
- 实现 Trie
- 添加与搜索单词
字符串集合题
节点结构、结束标记
Trie + DFS212. 单词搜索 II648. 单词替换中高频题前缀剪枝
Trie + DFS
- 单词搜索 II
- 单词替换
中高频题
前缀剪枝
并查集547. 省份数量1319. 连通网络的操作次数连通性模板路径压缩
并查集
- 省份数量
- 连通网络的操作次数
连通性模板
路径压缩
并查集判环684. 冗余连接990. 等式方程的可满足性图题常见变体先合并等式,再检查冲突
并查集判环
- 冗余连接
- 等式方程的可满足性
图题常见变体
先合并等式,再检查冲突
复习路线入口
这篇文章只保留数据结构相关题单。7 天复习路线和 30 天复习路线统一维护在数据结构复习总览,避免题单文章和总览页重复维护同一套计划。
写在最后
如果内容对你有帮助的话,欢迎顺手给 JavaGuide 点一个免费的 Star 支持一下:GitHub | Gitee。
JavaGuide 已持续维护近七年,累计 6100+ 次提交,来自 620+ 位贡献者共同完善。你的 Star、反馈和 PR,都是这个项目继续更新的动力。
如果你正在准备后端/AI 应用开发面试,也可以了解一下我的知识星球,里面包括后端和 AI 实战项目、简历优化、一对一提问和高频考点资料,已经持续维护六年。