给 LeetCode 题解仓库提 PR:认领、撰写、合并一次讲透
【免费下载链接】leetcodeLeetCode Solutions: A Record of My Problem Solving Journey.( leetcode题解,记录自己的leetcode解题之路。)项目地址: https://gitcode.com/gh_mirrors/le/leetcode
昨晚你git clone了这个 LeetCode 开源仓库(git clone https://gitcode.com/gh_mirrors/le/leetcode),想给它贡献出第一份力,结果打开顶层目录,看到的是problems/、thinkings/、daily/、assets/一长串……直接懵了:翻译去哪认领?题解文件放哪?"综合认领区"又是个什么东西?
别慌。这篇文章就按「认领 → 撰写 → 提交」这条流程,把翻译、新增题解、每日一题三种贡献方式一次讲透,读完照着走就能发出你的第一个 PR。
仓库速览
打开仓库你能看到:problems/是经典题解的主体(一题一个文件),thinkings/是数据结构与算法的专题总结(比如回溯、动态规划),daily/按日期记录每日一题活动,assets/则装着全部配图和 draw.io 源文件。对贡献者来说真正要盯住的只有四处:templates/(官方模板,分题解和每日一题两套)、CONTRIBUTING.md(中文贡献规范全文)、README.md与README.en.md(题解索引页,新题解要往里面插链接),以及 problems/、daily/、assets/ 这三个内容目录。
三种贡献方式怎么选
| 方式 | 门槛 | 产出物 | 适合谁 |
|---|---|---|---|
| 文档翻译 | 低 | 一份.en.md英文文件 | 想快速上手、英文阅读没问题 |
| 新增题解 | 中 | 题解文件 + README 链接 + 可选配图 | 已把某道题解透、愿意把思路写下来 |
| 每日一题 | 中(协作型) | daily/下的日期文档 | 想讨论、想要反馈、已进交流群 |
阶段一:先认领
三种方式的认领机制不一样,搞混是新手最容易踩的坑。
翻译:提交新 issue 认领
去仓库的 issue 列表里找还没翻译的文档,通过提交一个新 issue的方式认领,避免和别人重复劳动。认领完再动手,这是规矩。
新增题解:不用认领,直接提 PR
某道题你解透了,照着模板写好直接提 Pull Request 就行,没有前置流程。
每日一题:issue 下留言"认领"
每日一题是交流群(微信、QQ)里的集体刷题活动。流程是:先到daily/顶部的"综合认领区"(daily/README.md)挑一个"待领取"的题目,到对应 issue 下留言"认领",维护者会把它移入"进行中"并把你设为解决者。题目描述和优秀解答可以直接从 issue 讨论里收集,不用一个人闷头写;PR 合并后状态变为"已合并",你也正式成了项目的贡献者。
阶段二:怎么写
题解模板的七个必填项
以开源题解模板templates/problems/1014.best-sightseeing-pair.md为准,一篇合格题解至少要有下面七项,少掉一个都不行:
| 序号 | 章节 | 写什么 |
|---|---|---|
| 1 | 题目地址 | 实际题目的 LeetCode / 力扣链接(替换模板示例) |
| 2 | 题目描述 | 完整摘录题目要求与示例 |
| 3 | 前置知识 | 需要的数据结构或算法基础 |
| 4 | 公司 | 常考察这题的公司(如阿里、字节) |
| 5 | 思路 | 核心解法,讲清楚为什么这样解 |
| 6 | 关键点 | 难点要点,如空间换时间、dp 空间优化 |
| 7 | 代码 | 完整可运行代码,多语言更佳 |
"扩展""相关题目""参考"是可选项。⚠️ 模板里有条铁律:不能自创与"思路"语义雷同的标签(比如"想法"),为保持全仓库结构一致,统一用"思路"。
中英文件名怎么写
全仓库通过文件名区分中英版本,中文abc.md,对应英文abc.en.md:
中文:problems/1014.best-sightseeing-pair.md 英文:problems/1014.best-sightseeing-pair.en.md翻译本身有两条硬约束:必须人工意译,别上机翻;技术术语保留英文原文,"binary search"、"dynamic programming" 这类算法名词不用翻译,CONTRIBUTING.md也明确要求避免机械性的逐字直译。
代码块怎么标语言
代码部分要写清楚是什么语言的代码,代码块必须显式标注语言:
# Python Code// C++ Code顺带提醒一个坑:模板里 Java 示例沿用了js标记,那是历史遗留,你提交时请按语言如实标注。如果提供多种语言实现,要在开头声明语言清单(可参考problems/78.subsets.md,开头即写"语言支持:JS,C++,Java,Python");各语言思路必须一致,命名则可以按各语言最佳实践走——Python 蛇形、JS 驼峰。
每日一题模板结构
以templates/daily/2019-06-03.md(每日一题模板)为骨架,结构是五段:标题(每日一题 - 题目名)→ 信息卡片 → 参考答案 → 扩展 → 其他优秀解答。信息卡片四要素:时间、题目链接、tag、题目描述。
tag 的规矩:可以多个,逗号分隔,且是枚举值(array、dp、math等),具体取值参考 LeetCode 官方 tag;提交 issue 时也要打上正确 tag。参考答案部分要把思路讲明白,逻辑复杂时画图辅助;扩展可以只放引申内容、不提供答案;"其他优秀解答"主要收集群成员的思路,也可以邀请本人来写。
配图放哪、用什么画
复杂题目必须配图,三类素材各有固定去处:
| 素材类型 | 目录 | 命名习惯 |
|---|---|---|
| 题解配图 | assets/problems/ | 与题解同名,如1014.best-sightseeing-pair.png |
| 每日一题图片 | assets/daily/ | 按日期相关命名 |
| draw.io 源文件 | assets/drawio/ | 如11.container-with-most-water.drawio |
工具方面模板推荐 excalidraw(在线白板)、draw.io、processon 或 iPad 画图应用,哪个顺手用哪个。仓库里不少题目(11、121、200、208 等)都保留了 draw.io 源文件,"题解 + 图解源文件"双提交是被鼓励的做法。
提交时都要交什么、放哪
题解写完,提交前把这几样凑齐,题解的四项缺一不可:
- 题解 markdown 文件(放
problems/); README.md中添加你的题解链接,按难度和题目序号插到对应位置;- 英文题解同时在
README.en.md中添加链接; - draw.io 文件或图片(可选,复杂题目必配)。
翻译最省事,交那份.en.md文件即可。每日一题交daily/下的日期文档(形如daily/2019-06-03.md),配图统一放assets/daily/、drawio 统一放assets/drawio/。最后记住:中文题解提供力扣中国的链接和题目描述,英文题解提供对应链接和英文描述。
提交前过一遍这份清单
- 题解七项章节(题目地址、题目描述、前置知识、公司、思路、关键点、代码)齐了吗?
- 代码块标了语言,且没有"想法"这类和"思路"重复的章节名?
README.md链接加了吗(英文题解连带README.en.md)?- 配图 / draw.io 源文件放进对应
assets/子目录了吗? - 每日一题的信息卡片含时间、题目链接、正确 tag?
- 翻译是人工意译、技术术语保留原文了吗?
第一个 PR 多少会有点手忙脚乱,但这个仓库的规则给得很明白——模板照抄、命名照抄、链接补全,就不会跑偏。合并之后你的名字会出现在贡献者列表里,那种成就感比 star 一个仓库实在得多。挑道题,开始吧。
【免费下载链接】leetcodeLeetCode Solutions: A Record of My Problem Solving Journey.( leetcode题解,记录自己的leetcode解题之路。)项目地址: https://gitcode.com/gh_mirrors/le/leetcode
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考