ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

给 LeetCode 题解仓库提 PR:认领、撰写、合并一次讲透

给 LeetCode 题解仓库提 PR:认领、撰写、合并一次讲透

给 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 源文件,"题解 + 图解源文件"双提交是被鼓励的做法。

提交时都要交什么、放哪

题解写完,提交前把这几样凑齐,题解的四项缺一不可:

  1. 题解 markdown 文件(放problems/);
  2. README.md中添加你的题解链接,按难度和题目序号插到对应位置;
  3. 英文题解同时在README.en.md中添加链接;
  4. 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),仅供参考

返回列表