|
| 1 | +# LeetCodeAnimation |
| 2 | + |
| 3 | +> 用动画把 LeetCode 题解过程拆开看:指针怎么移动、状态怎么转移、递归怎么展开、边界为什么成立。 |
| 4 | +> GitHub 这份是公开索引与历史素材;**完整的单步、回看、变速、语音讲解在网站版**。 |
| 5 | +
|
| 6 | +<!-- 转化层:徽章组(人手维护)。题目数徽章读 docs/data/stats.json,数字由脚本接管,勿手改。 --> |
| 7 | +[](https://github.com/MisterBooo/LeetCodeAnimation) |
| 8 | +[](https://github.com/MisterBooo/LeetCodeAnimation/commits/master) |
| 9 | +[](docs/leetcode-animation-index.md) |
| 10 | + |
| 11 | +<!-- 三个转化主按钮:全部带 utm_source=github。链接清单见 docs/readme-revamp/utm-links.md --> |
| 12 | +[](https://www.algomooc.com/leetcode-animation?utm_source=github&utm_medium=readme&utm_campaign=lca_revamp&utm_content=hero_interactive) |
| 13 | +[](https://www.algomooc.com/topics?utm_source=github&utm_medium=readme&utm_campaign=lca_revamp&utm_content=hero_topics) |
| 14 | +[](https://www.algomooc.com/ai-tutor?utm_source=github&utm_medium=readme&utm_campaign=lca_revamp&utm_content=hero_ai_xiaoou) |
| 15 | + |
| 16 | +如果这个项目帮到你,欢迎 **Star** 支持持续更新。 |
| 17 | + |
| 18 | +--- |
| 19 | + |
| 20 | +## 🚧 2026 大版本进行中 |
| 21 | + |
| 22 | +这个仓库不是一次性归档。2026 年正在做一轮大版本升级,**只列已上线 / 进行中的实话**: |
| 23 | + |
| 24 | +- ✅ **三语言参考代码**:每道题的题解配 **Python / C++ / Java** 三种实现,Python 为默认。 |
| 25 | +- ✅ **AI 私教「小欧」**:吴师兄带的 AI 算法私教,做题卡住可随时追问思路与边界。 |
| 26 | +- ✅ **吴师兄声线语音讲解**:动画边演示边讲,语音为 **AI 合成(吴师兄声线授权)**;点播放器里的 🔊 即可听。 |
| 27 | +- 🚧 **299 题全量质量清算**:对全站动画题逐题做质量复核与重制,分批上线,持续同步回本仓库索引。 |
| 28 | + |
| 29 | +> 进度会随同步脚本更新到下方「当前索引」与 [`docs/sync-log.md`](docs/sync-log.md)。 |
| 30 | +
|
| 31 | +--- |
| 32 | + |
| 33 | +## 网站版动画预览 |
| 34 | + |
| 35 | +下面四张 GIF 取自网站播放器的关键帧,**点图直达对应题目页**(完整步骤播放、三语言代码、语音讲解都在网站版)。 |
| 36 | + |
| 37 | +<table> |
| 38 | + <tr> |
| 39 | + <td width="50%"> |
| 40 | + <a href="https://www.algomooc.com/leetcode-animation/two-sum?utm_source=github&utm_medium=readme&utm_campaign=lca_revamp&utm_content=preview_two_sum"> |
| 41 | + <img src="docs/assets/previews/two-sum.gif" alt="两数之和动画预览" width="420"> |
| 42 | + </a> |
| 43 | + <br> |
| 44 | + <strong>两数之和</strong> |
| 45 | + <br> |
| 46 | + 边扫数组边维护哈希表,看清 complement 是怎么被找到的。 |
| 47 | + </td> |
| 48 | + <td width="50%"> |
| 49 | + <a href="https://www.algomooc.com/leetcode-animation/trapping-rain-water?utm_source=github&utm_medium=readme&utm_campaign=lca_revamp&utm_content=preview_trapping_rain_water"> |
| 50 | + <img src="docs/assets/previews/trapping-rain-water.gif" alt="接雨水动画预览" width="420"> |
| 51 | + </a> |
| 52 | + <br> |
| 53 | + <strong>接雨水</strong> |
| 54 | + <br> |
| 55 | + 用柱状图把左右边界和蓄水过程拆开,直观看懂为什么能接住水。 |
| 56 | + </td> |
| 57 | + </tr> |
| 58 | + <tr> |
| 59 | + <td width="50%"> |
| 60 | + <a href="https://www.algomooc.com/leetcode-animation/number-of-islands?utm_source=github&utm_medium=readme&utm_campaign=lca_revamp&utm_content=preview_number_of_islands"> |
| 61 | + <img src="docs/assets/previews/number-of-islands.gif" alt="岛屿数量动画预览" width="420"> |
| 62 | + </a> |
| 63 | + <br> |
| 64 | + <strong>岛屿数量</strong> |
| 65 | + <br> |
| 66 | + DFS 染色过程一格一格展开,连通块边界会更容易看清。 |
| 67 | + </td> |
| 68 | + <td width="50%"> |
| 69 | + <a href="https://www.algomooc.com/leetcode-animation/linked-list-cycle?utm_source=github&utm_medium=readme&utm_campaign=lca_revamp&utm_content=preview_linked_list_cycle"> |
| 70 | + <img src="docs/assets/previews/linked-list-cycle.gif" alt="环形链表动画预览" width="420"> |
| 71 | + </a> |
| 72 | + <br> |
| 73 | + <strong>环形链表</strong> |
| 74 | + <br> |
| 75 | + 快慢指针在链表上同步移动,什么时候相遇一眼能看到。 |
| 76 | + </td> |
| 77 | + </tr> |
| 78 | +</table> |
| 79 | + |
| 80 | +**↑ 网站版还能单步、回看、变速、听讲解** —— [打开在线交互版 →](https://www.algomooc.com/leetcode-animation?utm_source=github&utm_medium=readme&utm_campaign=lca_revamp&utm_content=preview_cta) |
| 81 | + |
| 82 | +--- |
| 83 | + |
| 84 | +## 项目特点 |
| 85 | + |
| 86 | +- **动画题解**:先看清算法过程,再回到代码。很多题目保留了 GIF 或分步动画素材。 |
| 87 | +- **三语言代码**:题解配 Python / C++ / Java 三种参考实现。 |
| 88 | +- **结构化数据**:[`docs/data/manifest.json`](docs/data/manifest.json) 可被脚本读取,用于生成索引、检查链接或二次整理。 |
| 89 | +- **持续同步**:网站侧新增或调整动画后,通过脚本同步回 GitHub —— 仓库不是静态归档。 |
| 90 | + |
| 91 | +<!-- LCA-AUTOGEN:STATS START — 勿手改,数字由 tools/scripts/build-readme.js 注入 --> |
| 92 | +## 当前索引 |
| 93 | + |
| 94 | +> 下表数字由 `tools/scripts/build-readme.js` 据 `docs/data/manifest.json` 实算注入,**请勿手改**。 |
| 95 | +
|
| 96 | +| 项目 | 数量 / 位置 | |
| 97 | +| :-- | :-- | |
| 98 | +| LeetCode 动画题数 | **256** | |
| 99 | +| 简单 | 71 | |
| 100 | +| 中等 | 160 | |
| 101 | +| 困难 | 25 | |
| 102 | +| 数据文件 | [`docs/data/manifest.json`](docs/data/manifest.json) | |
| 103 | +| 按题号索引 | [`docs/leetcode-animation-index.md`](docs/leetcode-animation-index.md) | |
| 104 | +| 按专题索引 | [`docs/index-by-topic.md`](docs/index-by-topic.md) | |
| 105 | +| 网站路径 | <https://www.algomooc.com/leetcode-animation> | |
| 106 | + |
| 107 | +<!-- LCA-AUTOGEN:STATS END --> |
| 108 | + |
| 109 | +> **数字口径**:上表 **256** 指**已同步到本仓库的 LeetCode 题动画数**(脚本据网站侧 `study_index.js` → `manifest.json` 实算)。 |
| 110 | +> 近况区提到的 **299** 指 **algomooc.com 全站动画内容总数**(含进阶题与专题,口径来自站内 `content-stats` 单一数据源),范围比本仓库已同步的 LeetCode 子集更大。 |
| 111 | +> 两个数字都**由脚本接管、禁止手写**:256 来自本仓库 manifest,299 随站内 content-stats 同步回填(见 [`docs/data/stats.json`](docs/data/stats.json) 的 `siteTotal` 字段)。 |
| 112 | +
|
| 113 | +--- |
| 114 | + |
| 115 | +## 内容地图 |
| 116 | + |
| 117 | +| 想找什么 | 从这里开始 | |
| 118 | +| :-- | :-- | |
| 119 | +| 按题号查动画 | [`docs/leetcode-animation-index.md`](docs/leetcode-animation-index.md) | |
| 120 | +| 按专题查动画 | [`docs/index-by-topic.md`](docs/index-by-topic.md) | |
| 121 | +| 用脚本处理题目数据 | [`docs/data/manifest.json`](docs/data/manifest.json) | |
| 122 | +| 查看早期题解文章 | [`docs/notes/`](docs/notes) 或 [`problems/`](problems) 下各题的 `Article/` | |
| 123 | +| 查看早期动画素材 | [`problems/`](problems) 下各题的 `Animation/` | |
| 124 | +| 查看同步记录 | [`docs/sync-log.md`](docs/sync-log.md) | |
| 125 | + |
| 126 | +--- |
| 127 | + |
| 128 | +<details> |
| 129 | +<summary><strong>🛠 维护者:同步与数据说明</strong>(点击展开 —— 普通读者可略过)</summary> |
| 130 | + |
| 131 | +### 仓库和网站的关系 |
| 132 | + |
| 133 | +GitHub 仓库保存历史内容、公开索引和同步脚本;网站侧维护当前动画页面。交互播放、步骤切换、阅读体验以网站版本为准。同步脚本把网站题目列表写回仓库,方便在 GitHub 上审阅、检索和版本化。 |
| 134 | + |
| 135 | +### 同步方式 |
| 136 | + |
| 137 | +网站侧题目索引来自 `study_index.js`。同步前先审查: |
| 138 | + |
| 139 | +```bash |
| 140 | +npm run review:site |
| 141 | +``` |
| 142 | + |
| 143 | +确认需要同步后运行: |
| 144 | + |
| 145 | +```bash |
| 146 | +npm run sync # 更新 manifest / 题号索引 / 专题索引 / 同步记录 |
| 147 | +npm run validate # 校验 manifest |
| 148 | +node tools/scripts/build-readme.js --write # 把 README 数字段 + stats.json 重新注入 |
| 149 | +``` |
| 150 | + |
| 151 | +会更新: |
| 152 | + |
| 153 | +- `docs/data/manifest.json` |
| 154 | +- `docs/leetcode-animation-index.md` |
| 155 | +- `docs/index-by-topic.md` |
| 156 | +- `docs/sync-log.md` |
| 157 | +- `docs/data/stats.json` 与 README 的 `当前索引` 标记区(数字段) |
| 158 | + |
| 159 | +更完整的判断规则、commit 规范和数字接管机制见 [`docs/sync-workflow.md`](docs/sync-workflow.md) 与 [`docs/HOW-TO-INTERACT.md`](HOW-TO-INTERACT.md)。 |
| 160 | + |
| 161 | +### 目录 |
| 162 | + |
| 163 | +| 路径 | 说明 | |
| 164 | +| :-- | :-- | |
| 165 | +| `docs/data/manifest.json` | LeetCode 动画索引数据(数字单一数据源) | |
| 166 | +| `docs/data/stats.json` | 由脚本实算的计数,供 README 徽章读取 | |
| 167 | +| `docs/leetcode-animation-index.md` | 由 manifest 生成的题目列表 | |
| 168 | +| `docs/index-by-topic.md` | 由 manifest 生成的专题索引 | |
| 169 | +| `docs/sync-log.md` | 网站侧索引同步记录 | |
| 170 | +| `docs/sync-workflow.md` | 网站和 GitHub 联动流程 | |
| 171 | +| `tools/scripts/review-site-changes.js` | 判断网站侧改动是否需要同步 | |
| 172 | +| `tools/scripts/sync-algomooc-index.js` | 从网站侧 `study_index.js` 同步索引 | |
| 173 | +| `tools/scripts/validate-manifest.js` | 校验 manifest | |
| 174 | +| `tools/scripts/build-readme.js` | 注入 README 数字段 + 生成 `stats.json` | |
| 175 | +| `docs/assets/previews/` | README 使用的网站版动画预览 GIF | |
| 176 | +| `docs/notes/` · `problems/` | 早期题解文章、代码与动画素材 | |
| 177 | + |
| 178 | +</details> |
| 179 | + |
| 180 | +--- |
| 181 | + |
| 182 | +## ⭐ Star 一下,见证 299 役收官 |
| 183 | + |
| 184 | +[](https://star-history.com/#MisterBooo/LeetCodeAnimation&Date) |
| 185 | + |
| 186 | +这个项目从一张张手画动画走到今天,靠的是每一个 Star 的鼓励。 |
| 187 | +如果它让你把某道题真正看懂了,**点个 Star** 就是对持续更新最实在的支持。 |
| 188 | + |
| 189 | +> 📌 内容持续同步自 **[algomooc.com](https://www.algomooc.com/leetcode-animation?utm_source=github&utm_medium=readme&utm_campaign=lca_revamp&utm_content=footer_site)** —— 网站更新,仓库索引随脚本同步。 |
| 190 | +
|
| 191 | +## English |
| 192 | + |
| 193 | +See [`docs/README-En.md`](docs/README-En.md). |
0 commit comments