本文档定义 EasyCode 题库的 markdown 格式、目录结构与写作约定。仓库 Code/ 目录下附带若干示例题供参考,你可以照着样例把自己想学习的题目装填进来。
跑 make ingest 时,后端会扫描 Code/ 下所有符合约定的 markdown,解析为 backend/data/problems.json,再灌入数据库。
题库按章节分子目录,每个子目录代表一个算法主题。目录前缀 NN_ 决定排序:
Code/
├── PROJECT_GUIDE.md ← 本文件
├── 00_学习方法指南.md ← 可选:学习方法说明
├── 01_数组/
│ ├── 00_数组理论基础.md ← 可选:章节理论引言
│ ├── 01_704_二分查找.md ★ 核心题
│ ├── 02_027_移除元素.md ★
│ └── 08_数组总结.md ← 可选:章节总结
├── 02_链表/
│ └── ...
└── ...
文件命名约定
| 部分 | 说明 |
|---|---|
章节目录:NN_<主题>/ |
NN 是两位数字章节序号,<主题> 是中文名 |
题目文件:NN_<题号>_<标题>.md |
NN 章节内序号,<题号> 来源平台编号,<标题> 中文 |
标题后缀 ★(可选) |
标记核心 / 高频 / 必练题,前端列表会高亮 |
00_xxx 理论基础.md |
章节首篇的引言性文档(可选) |
题库分两档,各自有不同的写作深度:
每个章节里最经典、最值得反复练的题。建议提供完整讲解,包含:
- 题目描述 — 题面、示例、约束
- 解题思路 — 暴力 → 优化的推导过程
- 代码实现(LeetCode 版) — 类方法签名,带注释
- 代码实现(ACM 版) — 含
input()/print()的可独立运行版 - 执行过程演示 — 用具体例子手动走一遍
- 易错点 — 边界条件、常见 bug
- 复杂度分析 — Big-O 时空 + 一句话推导
提供基本要素即可:
- 题目描述
- 核心思路(1–3 句话点明方向)
- 代码实现
- 一句话总结
# [题号]. 标题 ★
## 题目描述
题面、示例、约束。可在原文后附一句通俗"翻译"。
## 前置知识
阅读本题前你需要了解的概念(如适用)。
## 解题思路
### 暴力思路(为什么需要优化?)
先给出最直觉的暴力做法,分析复杂度问题,引出"为什么需要更好的方法"。
### 核心概念
提炼本题的核心思想(如二分查找的「循环不变量」、双指针的「快慢分工」),
围绕这个概念展开推理,让读者理解模板是怎么来的,而不是死记。
### 分步思路
第一步:...
第二步:...
第三步:...
## Python 代码(LeetCode 版)
```python
class Solution:
def method_name(self, ...) -> ...:
# 关键操作附中文注释
...
```
## Python 代码(ACM 版)
```python
import sys
def solve():
# 完整可运行,含输入读取与输出打印
...
if __name__ == "__main__":
solve()
```
## 执行过程演示
用题目中的例子,手动走一遍代码每一步。
## 易错点
- 边界条件:...
- 常见 bug:...
## 复杂度分析
- 时间:O(?) — 一句话解释
- 空间:O(?) — 一句话解释
## 举一反三
核心概念可以用在哪些场景。模板放这里作为"理解后的速查"。# [题号]. 标题
## 题目描述
简要描述。
## 核心思路
1–3 句话点明解法方向。
## Python 代码
```python
# 附关键注释
```
## 一句话总结
这道题的核心收获是什么。- 先暴力再优化 — 先展示暴力解,分析复杂度缺陷,再引出优化解,让读者理解"为什么需要更好的方法"
- 围绕核心概念,而非直接给模板 — 抓住一个核心概念讲透,模板放文末"举一反三"作为速查
- 多种写法对比 — 同题多解或同解多写法,通过对比加深理解
- 题目描述保留原文 — 直接使用原平台题面,保留示例和约束,可在原文后加通俗"翻译"
- 用"你"称呼读者,保持亲切
- 避免学术化表述,用类比和日常语言解释抽象概念
- 每个新概念第一次出现给出解释
- 不假设读者有任何前置算法知识(但假设会基本 Python)
- Python 3
- 变量名有意义(避免单字母
a, b, c,惯用i, j, n例外) - 关键操作附中文注释
- 优先使用 Python 内置数据结构(
list/dict/set/collections.deque) - 若题目用到 LeetCode 自定义类(
TreeNode/ListNode),在章节理论基础中先定义
每章首篇 00_xxx理论基础.md 建议覆盖:
- 这个数据结构 / 算法是什么(通俗解释)
- 在 Python 中如何表示和操作
- 面试常考的核心套路
- 该章节的学习路线图
每章末篇 xx_总结.md 建议覆盖:
- 本章所有题目速查表(题号 / 题名 / 核心方法 / 难度)
- 本章核心解题模式 / 模板回顾
- 常见变体和面试可能的追问
EasyCode 不分发任何题库内容。你装填的题目、题面、参考解的版权归原作者所有。
整理题库时建议:
- 题面:使用原平台(如 LeetCode 中文版)的官方描述,并在文末附上来源链接
- 参考解:可以参考公开题解整理,但建议用自己的话重写,避免直接复制他人代码
- 理论与总结:推荐根据多方资料综合后用自己的表达写,既加深理解又规避版权风险
你的题库 markdown 只存在本地 Code/ 目录,不会被上传也不会与他人共享。