第一次给 leetcode 开源仓库提 PR:翻译、题解与每日一题的完整贡献指南
【免费下载链接】leetcodeLeetCode Solutions: A Record of My Problem Solving Journey.( leetcode题解,记录自己的leetcode解题之路。)项目地址: https://gitcode.com/gh_mirrors/le/leetcode
这就是 leetcode 开源仓库,里面收录了经典题目解析、数据结构与算法专题总结、anki 卡片、每日一题活动记录和未来的计划。你想交的第一份贡献不管是翻译、新题解还是一期每日一题,本文按"认路 → 选题 → 产出 → 配图 → 自检"的顺序,把目录、模板和提交规则一次性讲清楚。
一、先认路:仓库五个目录的分工
动笔之前花几分钟把目录职责看清楚,后面每一步都会用到:
| 目录 | 职责 | 命名习惯 |
|---|---|---|
problems/ | 经典题解,一题一个文件 | 题号+题名,如1014.best-sightseeing-pair.md |
thinkings/ | 数据结构与算法专题总结 | 如 回溯、动态规划、前缀树 |
daily/ | 每日一题活动记录 | 按日期命名,如 2019-06-03.md |
templates/ | 官方提交模板 | 题解模板 与 每日一题模板 |
assets/ | 配套素材 | problems/放题解配图、drawio/放 draw.io 源文件、daily/放每日一题图片 |
再记住一条全仓库通用的规矩:中英双版本靠文件名区分——中文版叫abc.md,对应的英文版就叫abc.en.md。这条约定贯穿所有目录,翻译章节会用到它。
本地动手前先把仓库克隆下来:
git clone https://gitcode.com/gh_mirrors/le/leetcode二、三种贡献方式,先选对再动手
🧭 入口一共三个,工作量和流程各不相同:
- 翻译文档:找一篇没有译文的文档写出英文版。动作最轻,适合第一次贡献,但要先走 issue 认领,防止和他人撞车;
- 新增题解:内容贡献的主体,按模板写
problems/下的文件、更新 README 链接,必要时附带图片或 drawio 源文件; - 每日一题:源自交流群(微信、QQ)的集体刷题活动,题目先在 issue 里讨论,认领后整理成按日期命名的文档,沉淀进
daily/。
拿不准就从翻译入手:它不要求你解新题,只需要读懂已有内容并写出流畅的英文。
三、翻译一篇文档:从中文到 abc.en.md
怎么认领
去仓库的 issue 列表翻一翻,找出还没有译文的文档,提交一个新 issue声明认领,然后再开工。认领这一步的意义就一个:别让两个人同时翻译同一篇。
文件怎么命名
以中文题解 1014.best-sightseeing-pair.md 为例,它的英文版文件应当命名为1014.best-sightseeing-pair.en.md。仓库里已有大量中英双版本题解,比如 25.reverse-nodes-in-k-groups.md 和 25.reverse-nodes-in-k-groups-en.md,可以直接当命名参照。
质量上守住的三条线
- 人工翻译,不走机器。目标是译文读得顺、意思准,机翻那种生硬感过不了审;
- 算法名词保留原文,"binary search"、"dynamic programming" 这类词不需要译成中文;
- 优先意译。中文版贡献规范 CONTRIBUTING.md 特意强调了这一点:别逐字硬翻,让译文符合英文的表达习惯。
四、题解先读成品:1014 最佳观光组合拆解
📖 与其先背规则,不如先看一篇成品长什么样。problems/1014.best-sightseeing-pair.md 和模板文件同名,章节依次是:
题目地址 → 题目描述 → 前置知识(动态规划)→ 公司(阿里、字节)→ 思路 → 关键点解析 → 代码 → 小技巧
"思路"一节值得细读,它的叙事是层层递进的:先甩出暴力双循环O(N²)版本,说明为什么稳超时;再引入动态规划,用dp[i]表示数组前 i 项中A[i] + i的最大值;最后观察到dp[i+1]只依赖dp[i],于是拿单个变量pre顶掉整个 dp 数组,完成空间优化。文末还有"小技巧"补充——Python 里用if-else代替max()可能更快——并给出复杂度:时间 O(N),空间 O(N)。
"暴力 → 动态规划 → 空间优化"这条进阶线,是仓库里大量高质量题解的共同骨架,写自己的题解时可以照这个节奏来。
五、题解怎么写:七要素速查与文件清单
模板七要素 + 三项可选
题解模板 规定了必写内容,对照着填就行:
- 题目地址:替换成你实际做的题号与名称;
- 题目描述:完整摘录题目要求与示例;
- 前置知识:读者需要先具备的算法或数据结构;
- 公司:这道题常出现在哪些公司的面试里,如阿里、字节;
- 思路:核心解法,讲明白"为什么这样解";
- 关键点:难点与亮点,比如"空间换时间"、"dp 空间优化";
- 代码:完整可运行的实现,多语言更好。
另有扩展、相关题目、参考三节可选。还有一条硬性纪律:不要新增和"思路"意思重叠的章节名。你想加"想法"之类的标签,直接改成"思路"——全仓库 200 多道题解就是靠这条纪律保持结构一致的。
一次 PR 要交齐哪些文件
一份题解提交由四部分组成:
- 题解 markdown 本体,放进
problems/,结构跟随模板; - 在 README.md 里加上新题解的链接,位置要按难度和题目序号插到对应处;
- 英文题解的话,README.en.md 里也加一条链接(可选项,但推荐做);
- 画了图就一并附上 draw.io 文件(XML)或图片(可选项,面向复杂题目的图解)。
代码块与多语言约定
- 代码块必须显式声明语言,标准写法如下:
// C++ Code# Python Code// JavaScript Code// Java Code细节提醒:模板里的 Java 示例误用了js标记,实际提交时请按语言如实标成java。
- 给了多语言实现,就在代码前声明语言版本。参考 78.subsets.md,它开头写明"语言支持:JS,C++,Java,Python",随后四种语言依次展开。
- 多语言版本的思路必须一致,必要时命名也统一;不过命名规范可以遵循各语言最佳实践——Python 用 snake_case、JS 用 camelCase。
- 中文题解要附力扣中国的题目链接与题目描述;英文题解同样要给出对应链接和英文描述。
- 复杂题目必须配图,放法见下一节。
六、每日一题:认领、tag 与模板
🗓️ 每日一题的完整生命周期是:issue 讨论 → 认领 → 整理成日期文档 → 合并进仓库。
认领的八步流程
daily/README.md 的"综合认领区"列出了所有待认领题目的状态,认领按下面八步走:
- 进认领区看哪些题目还挂在"待领取"上;
- 挑一道你感兴趣的;
- 到对应 issue 下留言"认领";
- 维护者把卡片从"待领取"挪到"进行中",并把你设为解决者;
- 开始整理,格式照 每日一题模板 来,题目描述和优秀答案都可以从 issue 讨论里收集;
- 整理完提交 PR;
- 维护者合并后,卡片从"进行中"移入"已合并";
- 你正式成为项目的贡献者。
tag 怎么写才合规
模板里的tag允许写多个,用逗号分隔,而且必须是枚举值,候选项有 array、dp、math 等,取值范围参考 LeetCode 官方 tag。daily/README.md 的历史记录能看到真实用法,例如tag: 'trie' 'binary search'、tag: 'Array' 'Two Pointers'、tag: 'DP' 'Bit'。提 issue 时别忘给题目打上正确的 tag。
模板四大块,再看 2019-06-03 这期成品
模板 固定包含这些部分:
- 标题:
每日一题 - 题目名; - 信息卡片:时间、题目链接、tag、题目描述;
- 参考答案:思路讲明白并给出代码,语言不限,复杂逻辑可以上图;
- 扩展:放延伸引申内容,答案可省;
- 其他优秀解答:收录群成员的好思路,也可以请本人来写。
拿真实完成的 daily/2019-06-03.md(Longest Common Prefix)对照:信息卡片写清了时间、LeetCode 题目链接,tag 是trie与binary search两个;"参考答案"拆成二分法和trie 树两条线——二分法代码标了时间 O(n*logm)、空间 O(1) 的注释,trie 树解法则直接引用 208. 实现前缀树 的实现代码当参考思路;"其他优秀解答"目前标记"暂无",留给后续贡献者补。"一题多解 + 挂接专题知识"这种组织方式质量很高,值得模仿。
顺带一提:每日一题相关的图片统一存assets/daily/,涉及 drawio 则存assets/drawio/。
七、配图规范:图片与 drawio 各放哪
🖼️ 规范允许用图片或 draw.io 文件辅助讲解,素材仓库也划了固定位置:
| 素材类型 | 存放位置 | 命名或示例 |
|---|---|---|
| 题解配图 | assets/problems/ | 与题解同名,如1014.best-sightseeing-pair.png |
| 每日一题图片 | assets/daily/ | 按日期相关命名存放 |
| draw.io 源文件 | assets/drawio/ | 如11.container-with-most-water.drawio、208.implement-trie-prefix-tree.drawio |
绘图工具,模板推荐 excalidraw 在线白板、draw.io、processon,甚至 iPad 上的画图应用,随你选。硬性要求只有一条:复杂题目必须配图,帮读者直观理解。从assets/drawio/目录能看到,11、121、122、125、200、208 这些题都留有.drawio源文件,也就是说"题解 + 图解源文件"双提交是仓库鼓励的做法。
八、提交前五项自检:PR 自检清单
✅ 提 PR 之前把这五项过一遍,全勾上再点提交:
- 题解七项齐了吗:题目地址、题目描述、前置知识、公司、思路、关键点、代码?
- 每个代码块都标了语言?有没有和"思路"撞车的章节名(比如"想法")?
- README.md 的新题解链接加了吗?英文题解是否同步改了 README.en.md?
- 图片、drawio 源文件放进
assets/的对应子目录了吗? - 每日一题的信息卡片里,时间、链接、tag 三样齐了吗?
九、三种贡献方式一览表
| 贡献类型 | 认领方式 | 核心产出 | 关键规范
【免费下载链接】leetcodeLeetCode Solutions: A Record of My Problem Solving Journey.( leetcode题解,记录自己的leetcode解题之路。)项目地址: https://gitcode.com/gh_mirrors/le/leetcode
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考