Skip to content

Commit 9693ad4

Browse files
Update
1 parent 9b3c234 commit 9693ad4

File tree

6 files changed

+263
-34
lines changed

6 files changed

+263
-34
lines changed

README.md

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
> 1. **介绍** :本项目是一套完整的刷题计划,旨在帮助大家少走弯路,循序渐进学算法,[关注作者](#关于作者)
66
> 2. **正式出版**[《代码随想录》](https://programmercarl.com/other/publish.html)
77
> 3. **PDF版本**[「代码随想录」算法精讲 PDF 版本](https://programmercarl.com/other/algo_pdf.html)
8-
> 4. **算法公开课**[《代码随想录》算法视频公开课](https://www.bilibili.com/video/BV1fA4y1o715)
8+
> 4. **算法公开课**[《代码随想录》算法视频公开课](https://www.programmercarl.com/other/gongkaike.html)
99
> 5. **最强八股文**[代码随想录知识星球精华PDF](https://www.programmercarl.com/other/kstar_baguwen.html)
1010
> 6. **刷题顺序** :README已经将刷题顺序排好了,按照顺序一道一道刷就可以。
1111
> 7. **学习社区** :一起学习打卡/面试技巧/如何选择offer/大厂内推/职场规则/简历修改/技术分享/程序人生。欢迎加入[「代码随想录」知识星球](https://programmercarl.com/other/kstar.html)
12-
> 8. **提交代码** :本项目统一使用C++语言进行讲解,但已经有Java、Python、Go、JavaScript等等多语言版本,感谢[这里的每一位贡献者](https://github.com/youngyangyang04/leetcode-master/graphs/contributors),如果你也想贡献代码点亮你的头像,[点击这里](https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A)了解提交代码的方式。
12+
> 8. **提交代码** :本项目统一使用C++语言进行讲解,但已经有Java、Python、Go、JavaScript等等多语言版本,感谢[这里的每一位贡献者](https://github.com/youngyangyang04/leetcode-master/graphs/contributors),如果你也想贡献代码点亮你的头像,[点击这里](https://www.programmercarl.com/qita/join.html)了解提交代码的方式。
1313
> 9. **转载须知** :以下所有文章皆为我([程序员Carl](https://github.com/youngyangyang04))的原创。引用本项目文章请注明出处,发现恶意抄袭或搬运,会动用法律武器维护自己的权益。让我们一起维护一个良好的技术创作环境!
1414
1515

@@ -51,19 +51,12 @@
5151

5252
## 如何使用该刷题攻略
5353

54-
电脑端还看不到留言,大家可以在公众号[「代码随想录」](https://img-blog.csdnimg.cn/20201124161234338.png),左下角有「刷题攻略」,这是手机版刷题攻略,看完就会发现有很多录友(代码随想录的朋友们)在文章下留言打卡,这份刷题顺序和题解已经陪伴了上万录友了,同时也说明文章的质量是经过上万人的考验!
55-
56-
欢迎每一位学习算法的小伙伴加入到这个学习阵营来!
57-
58-
**目前已经更新了,数组-> 链表-> 哈希表->字符串->栈与队列->树->回溯->贪心,八个专题了,正在讲解动态规划!**
54+
按照先面的排列顺序,从数组开始刷起就可以了,顺序都安排好了,按顺序刷就好。
5955

6056
在刷题攻略中,每个专题开始都有理论基础篇,并不像是教科书般的理论介绍,而是从实战中归纳需要的基础知识。每个专题结束都有总结篇,最这个专题的归纳总结。
6157

6258
如果你是算法老手,这篇攻略也是复习的最佳资料,如果把每个系列对应的总结篇,快速过一遍,整个算法知识体系以及各种解法就重现脑海了。
6359

64-
65-
目前「代码随想录」刷题攻略更新了:**200多篇文章,精讲了200道经典算法题目,共60w字的详细图解,大部分题目都搭配了20分钟左右的视频讲解**,视频质量很好,口碑很好,大家可以去看看,视频列表:[代码随想录视频讲解](https://www.bilibili.com/video/BV1fA4y1o715)
66-
6760
**这里每一篇题解,都是精品,值得仔细琢磨**
6861

6962
我在题目讲解中统一使用C++,但你会发现下面几乎每篇题解都配有其他语言版本,Java、Python、Go、JavaScript等等,正是这些[热心小伙们](https://github.com/youngyangyang04/leetcode-master/graphs/contributors)贡献的代码,当然我也会严格把控代码质量。
@@ -100,14 +93,11 @@
10093
* [程序员应该用什么用具来写文档?](./problems/前序/程序员写文档工具.md)
10194

10295
* 求职
96+
* [ACM模式练习网站,卡码网](https://kamacoder.com/)
10397
* [程序员的简历应该这么写!!(附简历模板)](./problems/前序/程序员简历.md)
98+
* [【专业技能】应该这样写!](https://programmercarl.com/other/jianlizhuanye.html)
99+
* [【项目经历】应该这样写!](https://programmercarl.com/other/jianlixiangmu.html)
104100
* [BAT级别技术面试流程和注意事项都在这里了](./problems/前序/BAT级别技术面试流程和注意事项都在这里了.md)
105-
* [北京有这些互联网公司,你都知道么?](./problems/前序/北京互联网公司总结.md)
106-
* [上海有这些互联网公司,你都知道么?](./problems/前序/上海互联网公司总结.md)
107-
* [深圳有这些互联网公司,你都知道么?](./problems/前序/深圳互联网公司总结.md)
108-
* [广州有这些互联网公司,你都知道么?](./problems/前序/广州互联网公司总结.md)
109-
* [成都有这些互联网公司,你都知道么?](./problems/前序/成都互联网公司总结.md)
110-
* [杭州有这些互联网公司,你都知道么?](./problems/前序/杭州互联网公司总结.md)
111101

112102
* 算法性能分析
113103
* [关于时间复杂度,你不知道的都在这里!](./problems/前序/关于时间复杂度,你不知道的都在这里!.md)
@@ -506,7 +496,7 @@
506496

507497
# 关于作者
508498

509-
大家好,我是程序员Carl,哈工大师兄,《代码随想录》作者,先后在腾讯和百度从事后端技术研发,CSDN博客专家。对算法和C++后端技术有一定的见解,利用工作之余重新刷leetcode。
499+
大家好,我是程序员Carl,哈工大师兄,《代码随想录》作者,先后在腾讯和百度从事后端技术研发。对算法和C++后端技术有一定的见解,利用工作之余重新刷leetcode。
510500

511501
加入「代码随想录」刷题小分队(微信群),可以扫下方二维码,加代码随想录客服微信。
512502

@@ -527,4 +517,3 @@
527517
<div align="center"><img src="https://code-thinking-1253855093.file.myqcloud.com/pics/20211026122841.png" data-img="1" width="650" height="500"></img></div>
528518

529519

530-
<!-- 24. [贪心算法:714.买卖股票的最佳时机含手续费](./problems/0714.买卖股票的最佳时机含手续费.md) -->

problems/qita/join.md

Lines changed: 249 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,249 @@
1+
2+
3+
# 如何在Github上提交PR(pull request)
4+
5+
6+
* 如何提交代码
7+
* 合入不规范
8+
* 提交信息不规范
9+
* Markdown 代码格式
10+
* pull request里的commit数量
11+
* 代码注释
12+
* 说明具体是哪种方法
13+
* 代码规范
14+
* 代码逻辑
15+
* 处理冲突
16+
17+
以下在 [https://github.com/youngyangyang04/leetcode-master](https://github.com/youngyangyang04/leetcode-master) 上提交pr为为例
18+
19+
## 如何合入代码
20+
21+
首先来说一说如何合入代码,不少录友还不太会使用github,所以这里也做一下科普。
22+
23+
我特意申请一个新的Github账号,给大家做一个示范。
24+
25+
需要强调一下,一个commit就只更新一道题目,不要很多题目一起放在一个commit里,那样就很乱。
26+
27+
首先LeetCode-Master每天都有更新,如何保持你fork到自己的仓库是最新的版本呢。
28+
29+
点击这里Fetch upstream。
30+
31+
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20230721172815.png' width=500 alt=''></img></div>
32+
33+
点击之后,这里就会显示最新的信息了
34+
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20210516213032568.png' width=500 alt=''></img></div>
35+
36+
注意这时是你的远端仓库为最新版本,本地还不是最新的,本地要git pull一下。
37+
38+
基于最新的版本,大家在去提交代码。
39+
40+
如何提交代码呢,首先把自己的代码提交到自己的fork的远端仓库中,然后open pull request,如图:
41+
42+
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20210516215102296.png' width=500 alt=''></img></div>
43+
44+
点击 open pull request之后,就是如下画面,一个pull request有多个commit。
45+
46+
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20210516215646937.png' width=500 alt=''></img></div>
47+
48+
然后就是给pull request 添加备注,pull request是对本次commit的一个总结。如果一个pull request就一个commit,那么就和commit的备注保持一次。 然后点击 create pull request 就可以了
49+
50+
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20210516220219891.png' width=500 alt=''></img></div>
51+
52+
此时你就提交成功了,我会在项目中的pull requests 处理列表里看到你的请求。
53+
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20210516220502485.png' width=500 alt=''></img></div>
54+
55+
然后如果你发现自己的代码没有合入多半是有问题,如果有问题都有会在pull request里给出留言的,
56+
57+
## 注意事项
58+
59+
### 提交信息不规范
60+
61+
62+
大家提交代码的时候有两个地方需要写备注,一个是commit,一个是pull request,pull request包好多个commit。
63+
64+
commit 说清楚本文件多了哪些修改,而pull request则是对本次合入的所有commit做一个总结性描述。
65+
66+
commit备注,举例:添加Rust python3,那么commit备注就是:添加0001两数之和 Rust python3 版本
67+
68+
而pull request 如果只有一个commit,那么就也是:添加0001两数之和 Rust python3 版本
69+
70+
如果是多个commit ,则把本次commit都描述一遍。
71+
72+
### Markdown 语法
73+
74+
关于 Markdown 代码格式,例如 添加C++代码,需要有代码块语法
75+
76+
\`\`\`C++
77+
C++代码
78+
\`\`\`
79+
80+
例如这个commit,在添加java代码的时候,就直接添加代码
81+
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20210512141514272.png' width=500 alt=''></img></div>
82+
83+
正确的格式应该是这样:
84+
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20210513101029336.png' width=500 alt=''></img></div>
85+
86+
一般发现问题,我也会在代码中给出评论:
87+
88+
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/2021051309401135.png' width=500 alt=''></img></div>
89+
90+
这样大家也可以学习一些 提交代码的规范方面的知识
91+
92+
93+
有的录友 是添加的代码块语法,但没有标记是哪种语言,这样的话 代码就不会针对某种语言高亮显示了,也比较影响阅读,例如:
94+
95+
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/2021051214212374.png' width=500 alt=''></img></div>
96+
97+
提交python代码的话,要注释好,是python2还是python3
98+
99+
例如这样:
100+
101+
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20210513174147165.png' width=500 alt=''></img></div>
102+
103+
当然python2的话,只这么写就行
104+
105+
\`\`\`python
106+
python代码
107+
\`\`\`
108+
109+
### pull request里的commit数量
110+
111+
112+
有的录友是一个pull request 里有很多commit (一个commit是一道题目的代码)。
113+
114+
有的录友是一个pull request 里有有一个commit。
115+
116+
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20210512221535670.png' width=500 alt=''></img></div>
117+
118+
其实如果大家是平时一天写了两三道题目的话,那么分三个commit,一个pull request提交上来就行。
119+
120+
一个pull request 一个commit也可以,这样大家就会麻烦一点。
121+
122+
但注意一个pull request也不要放太多的commit,一旦有一道题目代码不合格,我没有合入,就这个pull request里影响其他所有代码的合入了。
123+
124+
### 代码注释
125+
126+
提交的代码最好要有注释,这样也方便读者理解。
127+
128+
例如这位录友,在提交Java代码的时候,按照题解的意思对Java版本的代码进行的注释,这就很棒👍
129+
130+
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20210512212151438.png' width=500 alt=''></img></div>
131+
132+
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20210513101321112.png' width=500 alt=''></img></div>
133+
134+
当然如果大家感觉 已有的代码 不符合以上要求的话,例如 代码思路不够清晰不够规范,注释不够友好,依然欢迎提交优化代码,要记得详细注释哦。
135+
136+
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20210516082342756.png' width=500 alt=''></img></div>
137+
138+
### 说明具体是哪种方法
139+
140+
有的题解有两种甚至三四种解法,在添加代码的时候,注释上也清楚具体是哪一种方法的版本。
141+
142+
下面这位录友做的就很好
143+
144+
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20210512221951251.png' width=500 alt=''></img></div>
145+
146+
147+
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20210513101551819.png' width=500 alt=''></img></div>
148+
149+
有的题解,是一起给出了多道题目的讲解,例如项目中0102.二叉树的层序遍历.md 中有八道题目,那么大家添加代码的时候 应该在代码注释上,或者 直接写上 是哪个题目的代码。
150+
151+
152+
### 代码规范
153+
154+
155+
大家提交代码要规范,当然代码可以在力扣上运行通过是最基本的。
156+
157+
虽然我主张没有绝对正确的代码风格,但既然是给LeetCode-Master提交代码,尽量遵循Google编程规范。
158+
159+
经常看我的代码的录友应该都知道,我的代码格严格按照 Google C++ 编程规范来的,这样看上去会比较整洁。
160+
161+
大家提交代码的时候遇到规范性问题,例如哪里应该由空格,哪里没有空格,可以参考我的代码来。
162+
163+
有一位录友在提交代码的时候会把之前的代码 做一下规范性的调整,这就很棒。
164+
165+
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20210514093012603.png' width=500 alt=''></img></div>
166+
167+
**代码规范从你我做起!**
168+
169+
170+
### 代码逻辑
171+
172+
**提交的代码要按照题解思路来写**
173+
174+
虽然大家自己发挥想象空间是好的,但是题解还是要一脉相承,读者看完题解,发现代码和题解不是一个思路的话,那和重新读代码有啥区别了。
175+
176+
所以和题解不是一个思路的代码,除非详细注释了自己的思路 或者 写一段自己代码的描述说明思路和优化的地方,否则我就不会通过合入了哈。
177+
178+
大家的代码 最好也将关键地方放上注释,这样有助于别人快速理解你的代码。
179+
180+
181+
### 处理冲突
182+
183+
在合入的过程中还要处理冲突的代码, 理解大家代码的思路,解决冲突,然后在力扣提交一下,确保是没问题。
184+
185+
例如同一道题目, 一位录友提交了, 我还没处理如何,另一位录友也对这道题也提交了代码,这样就会发生冲突
186+
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20210514092248192.png' width=500 alt=''></img></div>
187+
188+
大家提交代码的热情太高了,我有时候根本处理不过来,但我必须当天处理完,否则第二天代码冲突会越来越多。
189+
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20210514091457392.png' width=500 alt=''></img></div>
190+
191+
一天晚分别有两位录友提交了 30多道 java代码,全部冲突,解决冲突处理的我脖子疼[]
192+
193+
那么在处理冲突的时候 保留谁的代码,删点谁的代码呢?
194+
195+
我一定是看谁 代码逻辑和题解一致,代码风格好,注释友好,就保留谁的。
196+
197+
所以例如当你想提交Java代码的时候,即使发现该题解已经有Java版本了,只要你的代码写的好,一样可以提交,我评审合格一样可以合入代码库。
198+
199+
200+
### 不要做额外修改
201+
202+
确保这种额外文件不要提交。
203+
204+
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20210514093430534.png' width=500 alt=''></img></div>
205+
206+
还有添加不同方法的时候,直接用正文格式写,哪种方法就可以了,不要添加目录 ,例如这样,这样整篇文章目录结构就有影响了。
207+
208+
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20210513102640556.png' width=500 alt=''></img></div>
209+
210+
前面不要加 `## 前序遍历(迭代法)`,直接写`前序遍历(迭代法)`就可以了。
211+
212+
当然这里也没有给代码块标记上对应的语言,应该是
213+
214+
\`\`\` Go
215+
Go语言代码
216+
\`\`\`
217+
218+
219+
## 对代码保持敬畏
220+
221+
有的录友甚至提交的代码并不是本题的代码,虽然我是鼓励大家提交代码的,但是大家贡献代码的时候也要对 自己的代码有敬畏之心,自己的代码是要给很多读者看的。
222+
223+
* 代码运行无误
224+
* 写的够不够简洁
225+
* 注释清不清晰
226+
* 备注规不规范
227+
228+
这也是培养大家以后协调工作的一种能力。
229+
230+
## 优化
231+
232+
目前 leetcode-master中大部分题解已经补充了其他语言,但如果你发现了可以优化的地方,依然可以提交PR来优化。
233+
234+
甚至发现哪里有语病,也欢迎提交PR来修改,例如下面:就是把【下表】 纠正为【下标】
235+
236+
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20210811144337.png' width=500 alt=''></img></div>
237+
238+
不用非要写出牛逼的代码才能提交PR,只要发现 文章中有任何问题,或者错别字,都欢迎提交PR,成为contributor。
239+
240+
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20210927113149.png' width=500 alt=''></img></div>
241+
242+
## 特别注意
243+
244+
git add之前,要git diff 查看一下,本次提交所修改的代码是不是 自己修改的,是否 误删,或者误加的文件。
245+
246+
提交代码,不要使用git push -f 这种命令,要足够了解 -f 意味着什么。
247+
248+
249+

problems/qita/参与本项目.md

Lines changed: 0 additions & 15 deletions
This file was deleted.

problems/前序/ACM模式如何构建二叉树.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11

22
# 力扣上如何自己构造二叉树输入用例?
33

4+
**这里给大家推荐ACM模式练习网站**[kamacoder.com](https://kamacoder.com),把上面的题目刷完,ACM模式就没问题了。
5+
46
经常有录友问,二叉树的题目中输入用例在ACM模式下应该怎么构造呢?
57

68
力扣上的题目,输入用例就给了一个数组,怎么就能构造成二叉树呢?

problems/前序/什么是核心代码模式,什么又是ACM模式?.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@
55

66
什么是ACM输入模式呢? 就是自己构造输入数据格式,把要需要处理的容器填充好,OJ不会给你任何代码,包括include哪些函数都要自己写,最后也要自己控制返回数据的格式。
77

8+
9+
**这里给大家推荐ACM模式练习网站**[kamacoder.com](https://kamacoder.com),把上面的题目刷完,ACM模式就没问题了。
10+
11+
812
而力扣上是核心代码模式,就是把要处理的数据都已经放入容器里,可以直接写逻辑,例如这样:
913

1014
```CPP

0 commit comments

Comments
 (0)