D

按数据结构、题型模式浏览专题,精选动画 Lab 样板

算法只是面试的一部分,完整后端路线还需要 Go、MySQL、Redis/MQ、分布式、稳定性和 AI 工程。

完整后端路线看这里

算法题型地图

从「数据结构」到「解题模式」,看懂每一道算法题的状态变化。

不要死背题解。先判断数据长什么样,再判断题目要求你做什么,最后进入动画 Lab,看指针、窗口、队列、递归栈、DP 表如何一步步变化。

题目输入
有序数组 [2,7,11,15],找 target=18
识别数据结构
数组 / 有序序列
选择题型模式
双指针
进入动画 Lab
2
L
7
11
15
R

按数据结构学

先看题目里的数据长什么样:数组、链表、树、图、堆、哈希……

数组链表
浏览 14 类数据结构

按题型模式学

再看题目要求你做什么:双指针、滑窗、二分、BFS、DP……

双指针滑动窗口二分DP
浏览 24 类题型模式

搜索 141 题

按题号、难度、专题、动画状态筛选全部 LeetCode 逐题动画。

题号难度专题状态
进入 141 题索引

这题应该用什么?

点一下题目里的关键词,看看可能对应哪些算法模式。

可能模式
二分查找双指针
为什么

能根据比较结果排除一部分候选。

代表题
LC34LC35LC167

按数据结构学

先看题目里的数据长什么样。

数组 / 动态数组

已入路线

数组是连续空间,下标就是坐标。

视觉隐喻
超市货架 / 跑道 / 坐标轴
动画看点
L/R 指针从两端移动,被排除的格子变暗
观察状态
index · left / right · current value · candidate range
适合题型
双指针、滑动窗口、前缀和
故事示例
在按价格排序的货架上找两件商品,价格太低就移动左手,价格太高就移动右手。
入口题
LC26LC27LC88+4
进入专题

字符串

已入路线

字符串是字符数组,但多了匹配、回退、前缀复用。

视觉隐喻
字符传送带 + 扫描仪
动画看点
窗口在主串上滑动,字符频次面板同步更新
观察状态
i / j 指针 · 窗口字符频次 · lps[j-1] · 匹配长度
适合题型
滑动窗口、KMP、哈希查找
故事示例
扫描仪在主串上识别模板,失败时不回到起点,而是根据已经匹配过的信息跳转。
入口题
LC3LC14LC28+4
进入专题

链表

已验证

链表题不是遍历难,是指针改线顺序难。

视觉隐喻
节点火车 / 车厢改挂钩
动画看点
prev / curr / next 三指针逐步改挂钩
观察状态
prev · curr · next · head · 断链风险
适合题型
双指针、递归、模拟
故事示例
每个节点是一节车厢,next 是挂钩。反转链表就是把挂钩一个个调头,先保存下一节,否则后面的车厢会丢。
入口题
LC19LC21LC83+5
进入专题

已入路线

栈解决最近的未完成问题。

视觉隐喻
盘子堆 / 撤销栈 / 门禁记录
动画看点
字符从左进入,匹配时 pop,栈顶高亮
观察状态
top · push · pop · 当前字符 · 是否匹配
适合题型
单调栈、DFS、表达式求值
故事示例
括号像开门和关门,最近打开的门必须最先关上。
入口题
LC20LC71LC150+4
进入专题

队列 / 双端队列

已有动画

队列解决按顺序推进和一层一层扩散。

视觉隐喻
排队通道 / 消防扩散队 / 任务流水线
动画看点
front/rear 标记,当前层出队,下一层入队
观察状态
front · rear · current level · next level · visited
适合题型
BFS、单调队列、拓扑排序
故事示例
火灾从起点向外扩散,每一分钟队列里的人处理当前层。
入口题
LC102LC199LC200+4
进入专题

哈希表 / 哈希集合

已入路线

哈希表用空间换时间,把全局搜索变成定点查询。

视觉隐喻
快递分拣柜 / 储物柜 / 通讯录
动画看点
key 扫码后进入对应 bucket 柜子
观察状态
key · hash bucket · count · seen set · complement
适合题型
哈希查找、双指针、滑动窗口
故事示例
每个商品扫码后放进对应柜子,下次找它不用全仓库翻,只看那个柜子。
入口题
LC1LC49LC128+5
进入专题

堆 / 优先队列

已入路线

堆解决每次都要拿最大、最小、第 K 个的问题。

视觉隐喻
优先级金字塔 / 排行榜 / 晋级赛
动画看点
插入新元素后上浮,弹出堆顶后下沉
观察状态
heap top · parent · child · sift up · sift down · heap size
适合题型
堆 / TopK、排序、贪心
故事示例
排行榜只保留前 K 名,新人进来后,弱者被淘汰。
入口题
LC23LC215LC295+3
进入专题

二叉树 / BST

已验证

树题的核心是递归:当前节点做什么,左右子树返回什么。

视觉隐喻
家族树 / 公司组织架构 / 决策树
动画看点
左侧树节点,右侧调用栈逐层压入弹出
观察状态
current node · call stack · left return · right return · merged result
适合题型
DFS、BFS、递归、分治
故事示例
经理向左右团队要结果,拿到后汇总给上级。
入口题
LC94LC100LC102+7
进入专题

已验证

图题解决连通、路径、依赖和扩散。

视觉隐喻
城市地图 / 课程依赖网 / 病毒传播图
动画看点
节点网络 + BFS 波纹逐层扩散
观察状态
visited · queue · distance · indegree · parent
适合题型
BFS、DFS、拓扑排序、并查集
故事示例
课程表就是依赖工厂,入度为 0 的课程先学,学完后释放后续课程。
入口题
LC133LC200LC207+4
进入专题

Trie 字典树

已入路线

Trie 把字符串集合变成共享前缀路径。

视觉隐喻
单词地铁线路图 / 字典索引树
动画看点
字符路径逐站高亮,共享前缀合并
观察状态
current char · current node · isEnd · prefix path
适合题型
字符串匹配 KMP、DFS、回溯
故事示例
每个字母是一站,多个单词共享前面的线路,到不同终点下车。
入口题
LC208LC211LC212+2
进入专题

并查集

已入路线

并查集解决谁和谁属于同一个集合。

视觉隐喻
部落合并 / 公司并购 / 找族长
动画看点
parent 指针森林,union 后路径压缩
观察状态
parent[x] · root · rank / size · path compression
适合题型
并查集、图、贪心
故事示例
每个人一开始是自己的部落,union 是部落合并,find 是找族长,路径压缩是以后直接找总部。
入口题
LC547LC684LC721+2
进入专题

矩阵 / 网格

已入路线

矩阵题是二维地图上的搜索、扩散和状态转移。

视觉隐喻
迷宫 / 像素地图 / 岛屿地图
动画看点
当前格子高亮,四方向箭头扩散
观察状态
row · col · direction · visited · boundary
适合题型
BFS、DFS、动态规划、并查集
故事示例
无人机扫描地图,遇到陆地后扩散标记,把整座岛染色。
入口题
LC36LC54LC73+5
进入专题

区间

已入路线

区间题解决多个范围之间的合并、覆盖、冲突和排序。

视觉隐喻
时间轴 / 日程表 / 火车时刻表
动画看点
重叠区间高亮后合并成更大区间
观察状态
start · end · current interval · merged interval · overlap
适合题型
排序、贪心、扫描线
故事示例
会议室安排就是看时间段有没有重叠,重叠就合并,不重叠就开新房间。
入口题
LC56LC57LC252+4
进入专题

复合设计结构

已入路线

设计题不是单个结构,而是多个结构组合满足复杂约束。

视觉隐喻
系统组件联动图 / 缓存控制室
动画看点
HashMap + 双向链表联动,访问后节点移到头部
观察状态
hash lookup · prev / next · head · tail · capacity · eviction
适合题型
哈希查找、链表、堆 / TopK、模拟
故事示例
LRU 像酒店房间,HashMap 负责快速找到客人,双向链表负责维护最近访问顺序。
入口题
LC146LC155LC380+2
进入专题

按题型模式学

再看题目要求你做什么操作。

双指针

已验证

用两个指针压缩搜索空间,排除不可能区间。

有序数组左右夹逼原地删除两端移动
视觉隐喻
尺子两端往中间逼近
动画看点
L 从左向右,R 从右向左,中间候选区高亮
观察状态
L · R · sum · candidate range
常见错误
无序数组直接套双指针;指针来回移动导致漏解
入口题
LC11LC15LC26+4
进入专题

滑动窗口

已验证

维护连续区间不变量,右扩左收。

连续子数组连续子串最长最短
视觉隐喻
半透明窗口在数组上滑动
动画看点
right 扩张窗口,left 收缩,统计面板同步
观察状态
left · right · window stats · answer
常见错误
忘记收缩导致窗口非法;混淆固定窗口与可变窗口
入口题
LC3LC76LC209+4
进入专题

前缀和 / 差分

已入路线

区间和 = 结束读数 - 开始读数。

区间和多次查询子数组和为 K区间批量加减
视觉隐喻
水表读数 / 累计柱状图
动画看点
区间 [l,r] 高亮,显示 prefix[r+1] - prefix[l]
观察状态
prefix[] · range · complement
常见错误
差分数组忘记最后还原;前缀和下标 off-by-one
入口题
LC303LC304LC560+3
进入专题

二分查找

已验证

二分不是找 mid,而是维护答案所在区间。

有序单调找边界最小可行值
视觉隐喻
走廊扫描灯,排除一半
动画看点
mid 扫描,被排除的一半变暗折叠
观察状态
left · right · mid · answer interval
常见错误
死循环边界;混淆 lower/upper bound
入口题
LC33LC34LC35+5
进入专题

排序

已入路线

排序把无序变有序,为后续贪心或双指针铺路。

顺序去重合并贪心前置
视觉隐喻
卡片交换位置,已排序区变绿
动画看点
pivot 分区 / 左右数组合并
观察状态
pivot · sorted region · compare pair
常见错误
忘记稳定性需求;自定义比较器写错
入口题
LC56LC75LC88+3
进入专题

哈希查找

已入路线

用空间换时间,O(1) 定点查询。

是否出现过出现次数快速找另一个数分组
视觉隐喻
快递分拣柜
动画看点
元素扫描后进入对应 key 柜子
观察状态
key · count · complement · seen
常见错误
忘记处理重复元素;哈希冲突未考虑
入口题
LC1LC49LC128+4
进入专题

栈 / 单调栈

已入路线

维护单调候选栈,新元素进来踢掉不符合的。

最近更大最近更小括号匹配表达式求值
视觉隐喻
盘子堆 / 单调递减栈
动画看点
新元素到达,栈顶不符合则弹出
观察状态
stack top · current x · pop count
常见错误
单调方向搞反;忘记处理栈空
入口题
LC20LC84LC150+4
进入专题

队列 / 单调队列

已入路线

队首始终是当前窗口最优候选。

滑动窗口最大值BFS 层序固定时间窗口
视觉隐喻
排队通道 + 过期淘汰
动画看点
队首过期移除,队尾弱候选踢出
观察状态
front · rear · window max · expire
常见错误
忘记移除过期元素;混淆 deque 与普通 queue
入口题
LC239LC346LC362+2
进入专题

递归

已入路线

当前节点做什么,子问题返回什么,怎么合并。

问题能拆成同类小问题链表分治
视觉隐喻
俄罗斯套娃 / 调用栈
动画看点
进入一层栈压入,返回一层栈弹出
观察状态
call stack · base case · merge
常见错误
缺少 base case;重复计算未记忆化
入口题
LC21LC104LC226+2
进入专题

回溯

已入路线

选择 → 递归 → 撤销,枚举决策树。

所有组合所有排列所有路径选择和撤销
视觉隐喻
决策树 + path 回退
动画看点
选数加入 path,返回时撤销高亮
观察状态
path · choices · backtrack
常见错误
忘记撤销选择;重复组合未去重
入口题
LC17LC39LC46+4
进入专题

DFS

已有动画

沿一条路走到底,回溯换路。

连通块路径探索树/图深度搜索
视觉隐喻
探险者深入再回退
动画看点
路径深入,visited 标记,回溯变灰
观察状态
visited · path · current node
常见错误
忘记标记 visited;栈溢出未改迭代
入口题
LC100LC112LC113+3
进入专题

BFS

已验证

波纹一圈圈扩散,第一次到达即最短路。

最短步数层序遍历多源扩散
视觉隐喻
水波纹 / 火灾扩散
动画看点
queue 当前层出队,下一层入队,distance +1
观察状态
queue · visited · distance · current level
常见错误
用 DFS 求无权最短路;忘记标记入队时 visited
入口题
LC102LC127LC199+3
进入专题

拓扑排序

已入路线

入度为 0 的先做,做完释放后继。

课程依赖任务先后顺序有向图是否有环
视觉隐喻
工厂流水线 / 课程表
动画看点
indegree 归零节点入队,后继 indegree -1
观察状态
indegree · queue · order
常见错误
未检测环;入度更新遗漏
入口题
LC207LC210LC269+2
进入专题

并查集

已入路线

find 找族长,union 合并,路径压缩加速。

动态连通合并集合判断是否同组
视觉隐喻
部落合并 / 找总部
动画看点
parent 森林,union 后路径压缩
观察状态
parent · root · rank · path compression
常见错误
忘记路径压缩;rank 合并方向错误
入口题
LC547LC684LC721+2
进入专题

堆 / Top K

已入路线

只维护前 K 个候选,不必完整排序。

第 K 大实时最大/最小合并有序流
视觉隐喻
排行榜 / 晋级赛
动画看点
小顶堆容量 K,新元素替换堆顶
观察状态
heap top · heap size · sift
常见错误
堆大小维护错误;混淆大顶堆小顶堆
入口题
LC23LC215LC295+3
进入专题

贪心

已入路线

每步选当前最优,并证明不会后悔。

每步选当前最好局部最优能推出全局最优
视觉隐喻
时间轴上选区间卡片
动画看点
被选卡片进入答案区,被排除显示原因
观察状态
current choice · answer set · why safe
常见错误
未证明贪心正确性;排序键选错
入口题
LC45LC55LC121+4
进入专题

动态规划

已入路线

定义状态、转移方程、填表顺序。

最优值方案数重复子问题当前状态依赖之前状态
视觉隐喻
递归树压缩成表格
动画看点
重复子问题高亮,表格逐格填充
观察状态
dp[i] · transition · base case · fill order
常见错误
状态定义不清;填表顺序错误
入口题
LC70LC198LC213+5
进入专题

背包 DP

已验证

不选继承上一行,选则来自剩余容量。

物品选择容量限制最多价值方案数
视觉隐喻
物品 × 容量二维表格
动画看点
dp[i][w] 从上方和左上方推导
观察状态
dp[i][w] · take / skip · capacity
常见错误
完全背包与 01 背包混淆;空间优化方向错误
入口题
LC416LC494LC518+2
进入专题

区间 DP

已入路线

按区间长度从小到大填表。

小区间推大区间合并代价左右边界
视觉隐喻
斜对角填表
动画看点
length=1,2,3… 逐层扩展
观察状态
dp[l][r] · split point · merge cost
常见错误
枚举 split 遗漏;边界初始化错误
入口题
LC312LC516LC664+1
进入专题

子序列 DP

已入路线

两序列对齐,相等来自对角,不等取 max。

LISLCS编辑距离两个序列比较
视觉隐喻
二维字符网格
动画看点
当前格从左上/上/左推导
观察状态
dp[i][j] · match · skip row/col
常见错误
空串 base case 遗漏;LIS 二分优化混淆
入口题
LC300LC583LC712+3
进入专题

位运算

已入路线

每个 bit 是开关,异或相同熄灭不同点亮。

异或状态压缩子集枚举只出现一次
视觉隐喻
二进制开关灯
动画看点
mask 逐位变化,异或动画
观察状态
mask · bit flip · xor result
常见错误
符号位扩展;子集枚举遗漏空集
入口题
LC136LC137LC191+4
进入专题

数学

已入路线

公式机器:输入数字,中间步骤逐行,输出答案。

GCD质数取模快速幂
视觉隐喻
公式流水线
动画看点
中间步骤逐行显示
观察状态
mod · power · prime sieve
常见错误
取模溢出;快速幂底数未取模
入口题
LC50LC69LC202+3
进入专题

字符串匹配 KMP

已验证

KMP 的核心不是快,而是主串不回头。

找子串前缀后缀重复模式模式串匹配
视觉隐喻
模式串滑动 + LPS 回退
动画看点
i 不回退,j 根据 lps 回退
观察状态
i · j · lps[] · matched prefix
常见错误
LPS 构造错误;失配时 i 也回退
入口题
LC28LC139LC208+4
进入专题

模拟 / 状态机

已入路线

当前状态 + 输入事件 → 转移规则 → 下一状态。

规则复杂按步骤执行没有明显高级算法状态会变化
视觉隐喻
状态机面板
动画看点
状态 A → B → C 逐步转移
观察状态
current state · input event · transition
常见错误
边界条件遗漏;状态转移表不完整
入口题
LC54LC59LC146+4
进入专题

推荐学习路线

按能力递进,不按百科顺序。

Step 1已入路线

数组 + 哈希

为什么学
掌握遍历、计数、查找
前置知识
代表题
LC1LC217LC242
Step 2已验证

双指针

为什么学
学会用两个指针压缩搜索空间
前置知识
数组基础
代表题
LC26LC27LC167
Step 3已验证

滑动窗口

为什么学
学会维护连续区间状态
前置知识
双指针
代表题
LC3LC209LC438
Step 4已入路线

前缀和

为什么学
学会把区间和变成两次查询
前置知识
数组
代表题
LC303LC560LC724
Step 5已验证

二分查找

为什么学
学会维护答案区间
前置知识
有序数组
代表题
LC35LC34LC153
Step 6已验证

链表

为什么学
掌握指针改线顺序
前置知识
指针思维
代表题
LC206LC19LC141
Step 7已入路线

栈 / 队列

为什么学
理解最近未完成状态和先进先出
前置知识
基础数据结构
代表题
LC20LC155LC239
Step 8已验证

树 DFS / BFS

为什么学
理解递归栈和层序队列
前置知识
递归
代表题
LC104LC226LC102
Step 9已验证

图 BFS / DFS / 拓扑

为什么学
理解 visited、queue、indegree
前置知识
树遍历
代表题
LC200LC207LC210
Step 10已入路线

堆 / TopK / 单调栈

为什么学
维护候选集合
前置知识
排序直觉
代表题
LC215LC347LC739
Step 11已有动画

动态规划

为什么学
理解状态、转移、填表顺序
前置知识
递归 + 重复子问题
代表题
LC70LC198LC322LC518
Step 12已验证

KMP / Trie

为什么学
理解字符串匹配和前缀复用
前置知识
字符串 + 递归
代表题
LC28LC208LC211

141 题索引

按题号、难度、数据结构、题型、状态筛选。

进入 141 题索引

学习状态说明

已入路线 — 专题已纳入学习路线,动画制作中已有动画 — 已有可回放的 Lab 样板已验证 — 动画经过 QA 验证,可放心学习