个人 LeetCode 算法知识库
以 Markdown 文件管理题解,使用 Python 脚本实现从力扣平台批量拉取、导入、校验的自动化流程
使用配合 Agent Skills 完成解题思路归纳, 知识链接
- 自动拉取:从力扣 CN 批量获取个人 AC 提交记录(含代码),支持断点续传与限流退避
- 自动导入:将 AC 记录转换为标准 Markdown 题解模板,自动填充题目描述、标签、难度
- 格式校验:CI 自动校验
solutions/*.md与topics/*.md规则,确保知识库质量 - 专题归纳:
topics/目录存放算法专题笔记,通过跨题链接构建知识体系
分类方案主要参考灵神的《如何科学刷题?》, 也加入了一些 《代码随想录》的内容
.
├── solutions/ # 题解,按题号每 100 题一段
│ ├── 0001-0100/
│ │ └── 0001-two-sum.md
│ ├── 0101-0200/
│ └── ...
├── topics/ # 算法专题笔记
│ ├── dynamic-programming.md
│ └── ...
├── scripts/ # Python 工具脚本
│ ├── fetch_problem.py
│ ├── fetch_ac_submissions.py
│ ├── import_ac_to_solutions.py
│ ├── migrate_competition_problems.py
│ ├── normalize_topics.py
│ ├── query_0x3f_index.py
│ └── ci/
│ ├── check_solutions.py
│ ├── check_topics.py
│ ├── check_competition_promotions.py
│ ├── check_id_integrity.py
│ └── ci.py
├── artifacts/ # 脚本中间产物(自动生成,不手写)
│ ├── ac_with_code.jsonl
│ ├── imported_paths.txt
│ ├── migrated_competition_paths.txt
│ └── id_integrity_report.jsonl
└── .github/workflows/
├── solutions-check.yml
└── id-integrity-check.yml
如果你想从零搭建属于自己的知识库, 建议 fork 一份到自己的仓库, 然后删除 solutions/ 下所有内容
同时删除 topics/ 下结构中的链接(如果想完全从零写 topics 也可以全删了)
随后开始使用脚本自动化拉取题目 + AC 代码
pip install requestsWarning
不要泄露你的 cookies(LEETCODE_SESSION / csrftoken),也不要把它们提交到 Git 仓库、截图或发到聊天记录中。
从浏览器打开 LeetCode F12 进入开发者模式
DevTools → Application → Cookies → leetcode.cn
获取两个 Cookies: LEETCODE_SESSION, csrftoken
cp .env.example .env
# 编辑 .env,填入以下两个字段:
# LC_SESSION=xxx # 原名 LEETCODE_SESSION
# LC_CSRF=xxx # 原名 csrftoken
fetch_problem.py拉取公开题目信息,不需要鉴权。
# 1. 按题号生成模板(普通题)
python scripts/fetch_problem.py 1584
# 1. 竞赛题或已知 slug 时,直接指定 slug(跳过 problems/all 查找)
python scripts/fetch_problem.py --slug count-sequences-with-given-sum
# 2. 手写解题思路 + 检查
python scripts/ci/check_solutions.py
# 3. (可选) 使用 skill 执行 link 以及扩充工作# 1. 拉取个人 AC 提交(需 .env 鉴权)
python scripts/fetch_ac_submissions.py
# 2. 导入到题解库
python scripts/import_ac_to_solutions.py
# 3. (可选) 使用 skill 执行 link 以及扩充工作# 检查 solutions/competition_problems 下是否已有题目转正
python scripts/ci/check_competition_promotions.py
# 预览迁移结果
python scripts/migrate_competition_problems.py --dry-run
# 执行迁移
python scripts/migrate_competition_problems.py| 脚本 | 说明 |
|---|---|
fetch_problem.py <题号> / --slug |
按题号或 slug 拉取单题,生成 Markdown 模板(竞赛题用 --slug) |
fetch_ac_submissions.py |
批量拉取 AC 提交,写入 artifacts/ac_with_code.jsonl |
import_ac_to_solutions.py |
将 JSONL 中未归档的题目批量导入 solutions/ |
migrate_competition_problems.py |
迁移 solutions/competition_problems/ 中已分配正式题号的题目 |
query_0x3f_index.py |
按题号查询 0x3f_problems_list/index.json 中的推荐归档位置 |
scripts/ci/check_competition_promotions.py |
检查竞赛题是否已转正但尚未迁移 |
scripts/ci/check_solutions.py |
仅检查 solutions/*.md 规则 |
scripts/ci/check_topics.py |
仅检查 topics/*.md 规则(含重复题号) |
scripts/ci/check_id_integrity.py |
校验 solutions/**/*.md 的题号、中文标题与 API 返回是否一致 |
scripts/ci/ci.py |
CI 总入口(串行执行 solutions + topics + competition promotion 检查) |
scripts/auto/auto_git.py |
自动收集 solutions/ / topics/ 改动并生成提交信息 |
仓库内置的自动化 skill 位于 .codex/skills/,当前有以下三个:
- 拉取最近 1 天 AC 提交, 并自动导入到
solutions/模板中, - 自动补齐本次新导入题解的
## 解题思路、时间复杂度、空间复杂度 - 拉起子 agent 执行
solution-topic-auto-link,把新题挂到topics/
- 读取指定
solutions/...md文件,按题目方法归类到合适的topics/*.md - 若现有小节不匹配,在对应专题下新建
### 子方法 ... - 在题解文件的
## 相关专题中写入回链接,与 topics 双向绑定 - 插入规范化条目,并执行校验与标题规范化
- 对同一题的多个 AC 代码块按质量排序,去掉重复方法
- 重排
## 代码中代码块顺序,并补全更优解对应的思路与复杂度 - 标注当前题解是否仍存在明显非最优实现
- 日常归档:优先用
daily-ac-summary(包含 topic 自动链接)。 - 单独补某个题目:用
solution-topic-auto-link(输入一个或多个solutions/...md路径)。
