博主头像
小雨淅沥

Some things were meant to be.

LeetCode Solution 简介

Markdown + Python + AI Agent 构建个人算法知识库的

刷了一段时间 LeetCode 之后,我意识到:光刷题没用,能系统地回忆和检索才算真正掌握。于是我搭了这套以 Markdown 为核心、脚本全自动化、AI 辅助归纳的算法知识库,今天把整个思路分享出来。

仓库地址:leetcode-solutions

如果有帮助,欢迎 star ⭐ 或者 fork 一份自己用

为什么不用现成工具?

市面上有很多刷题记录工具,但它们几乎都存在同一个问题:数据不在自己手上,格式也无法自定义

我想要的是:

  • 题解以纯文本存储,可以用任意编辑器打开和搜索
  • 有系统化的算法分类,不只是题目列表
  • 能自动从力扣拉取题目描述和我的 AC 代码,而不是每次手动复制
  • 可以用 AI 帮我归纳解题思路、把题目挂到对应的算法专题下

这套需求加在一起,现成工具满足不了,于是就有了这个仓库。


仓库整体结构

.
├── solutions/          # 题解,按题号每 100 题一个子目录
│   ├── 0001-0100/
│   │   └── 0001-two-sum.md
│   └── ...
├── topics/             # 算法专题笔记
│   ├── dynamic-programming.md
│   ├── graph-algorithms.md
│   └── ...
├── scripts/            # Python 自动化脚本
│   ├── fetch_problem.py
│   ├── fetch_ac_submissions.py
│   ├── import_ac_to_solutions.py
│   └── ci/
│       └── ci.py
└── .github/workflows/
    └── solutions-check.yml

整个仓库由三个层次组成:题解库(solutions)专题笔记(topics)自动化工具链(scripts),三者相互配合。


核心设计:双向绑定的知识体系

这是整个方案里我最满意的设计:题解(solution)和算法专题(topic)之间是双向链接的

每道题的 Markdown 文件末尾有一个 ## 相关专题 区块:

## 相关专题
- [动态规划](../../topics/dynamic-programming.md)

而在 topics/dynamic-programming.md 里,对应的子方法下会有一条题目条目:

### 线性序列 DP
...
#### 模板题目
- 0053 - 最大子数组和 | [LeetCode 链接](...) | [题解笔记](../solutions/0001-0100/0053-maximum-subarray.md)

这样,从任意一道题可以跳到算法专题,从专题也可以跳回所有相关题目。刷到类似题型时,不用再搜"这题用什么方法",直接看专题目录就能找到所有练过的变体。


自动化工具链

脚本 1:批量拉取 AC 提交

python scripts/fetch_ac_submissions.py

这个脚本通过力扣的接口,把我所有 AC 提交的代码批量拉下来,存成 JSONL 文件。支持断点续传、限流退避,一次可以拉几百道题。

拿到数据之后,再跑导入脚本:

python scripts/import_ac_to_solutions.py

脚本会自动:

  1. 调用 GraphQL 获取题目中文标题、难度、标签、描述
  2. 生成带标准格式 front matter 的 Markdown 文件
  3. 把 AC 代码填进 ## 代码 区块
  4. 按题号放到对应目录下(比如 0001-0100/)

省去了所有手动复制粘贴的工作。

脚本 2:按单题生成模板

# 按题号
python scripts/fetch_problem.py 1584

# 竞赛题直接指定 slug
python scripts/fetch_problem.py --slug count-sequences-with-given-sum

如果是当天参加比赛或者想手写某道题的思路,用这个脚本生成空白模板,然后自己填 ## 解题思路 就行。

CI 自动校验

每次 push 或提交 PR,GitHub Actions 会自动跑:

python scripts/ci/ci.py

它会检查所有 solutions/*.mdtopics/*.md 的格式规范,比如复杂度是否用了 $O(x)$ 格式、专题中的题目链接是否指向真实存在的文件等。不合规的提交直接 CI 红灯,强制保证知识库质量。


AI Agent Skills:真正的效率飞跃

光靠脚本还不够。写完题目代码之后,"这题用了什么思路"、"应该挂到哪个算法专题下"这两件事过去要手动做,现在交给 AI Agent。

仓库内置了两个 Agent Skill:

daily-ac-summary:全流程自动化

一条命令完成:
拉取 AC 记录 → 导入题解 → 补写解题思路 + 复杂度分析 → 挂到对应专题

每天刷完题,运行一次,AI 会:

  • 自动填写 ## 解题思路(说明用了什么算法、为什么这样设计)
  • 标注时间复杂度和空间复杂度
  • 判断该题属于哪个算法专题,并在专题文件里插入条目
  • 在题解文件里写好 ## 相关专题 回链

solution-topic-auto-link:单题补链

对某道以前没挂专题的旧题,单独跑一次 link 工作:

输入:solutions/0001-0100/0042-trapping-rain-water.md
输出:topics 中插入条目 + solution 中写入回链

专题覆盖范围

目前 topics/ 下有 12 个算法专题,分类方案主要参考灵神的《如何科学刷题?》:

专题覆盖方法
滑动窗口与双指针定长/不定长/单序列/双序列/三指针/分组循环
二分算法二分答案/最小化最大值/最大化最小值/第K小
单调栈基础/矩形面积/贡献法/最小字典序
动态规划入门/背包/划分/状态机/区间/状压/数位/树形/博弈
图论算法DFS/BFS/拓扑排序/基环树/最短路/最小生成树/网络流
常用数据结构前缀和/差分/堆/字典树/并查集/树状数组/线段树
......

每个专题文件的结构是统一的:概览 → 核心思想 → 解题流程 → 模板与子方法(含代码模板)→ 易错点 → 总结。不是题目列表,而是可以直接用来复习的知识笔记。


目前规模

截至写这篇文章,solutions/ 已收录 236 道题,分布在 0001 到 3900+ 的题号范围内,覆盖了从 Easy 到 Hard 的各种类型。


如果你想自己搭一套

仓库是可以 fork 的。步骤很简单:

  1. Fork 仓库,删除 solutions/ 下所有内容
  2. 配置鉴权:从浏览器拿 LEETCODE_SESSIONcsrftoken,写入 .env
  3. 安装依赖pip install requests
  4. 开始拉取python scripts/fetch_ac_submissions.py 把历史 AC 记录拉下来
  5. 批量导入python scripts/import_ac_to_solutions.py
  6. 用 AI 补充思路,双向挂链到 topics
LeetCode Solution 简介
https://www.rainerseventeen.cn/index.php/Project/67.html
本文作者 Rainer
发布时间 2026-02-26
许可协议 CC BY-NC-SA 4.0
发表新评论