本仓库用来记录各类算法题的常用模板、思路,能让大家更快的刷题!
参加这个开源项目,你将获得:
- ⏳学习和总结了常用的模板;
- 🚀掌握一类题目的解题技巧;
- 📒锻炼了自己的文档书写能力;
- 🏃强化了Git和多人协作方法。
最后的成品会是一个在线知识文档,会说明每个人的贡献哦~ 快加入它✊
- 文档规范:
代码规范注意事项:
原则:如果业内有编码规范,需要严格参考编码规范编写代码,避免代码个人风格化。
Java 语言参考《阿里巴巴 Java 开发手册》(https://github.com/alibaba/p3c)。
以下没有列出的语言,请各位老师自行根据掌握的知识修改。
C++ 语言:https://google.github.io/styleguide/cppguide.html
-
写「参考代码」或者是「模板代码」的时候,用编辑器写(Java 可以用 IDEA,Python 用 PyCharm),都会有格式化的功能,这样最省心,不用自己去调格式;
-
for 和 if 后面的代码,即使只有一行都换行和加括号;目前争议最大的是左括号之前是否换行,不要使用自己的习惯,应该遵守行业编码规范;
-
声明变量的时候,同样类型的变量,不管有几个,必须一行声明一个;
-
注释不要写尾注释,注释都是单独一行,// 后面加上空格;
-
“” 都用统一都用「」,英文和数字混在中文里面的,前后要加空格;
-
参考代码写必要的注释,如果代码太长应该想办法抽取成为私有函数,保证主线逻辑要清楚。并且主线函数在上方,私有函数在下方;
-
(Java)严格使用访问控制符;
-
视情况使用全局变量;
-
每道问题后面,除了回溯算法需要剪枝的问题,尽量写复杂度分析。如果是用到主定理的,需要简单说明推导过程。
-
nums[index++] 这种写法应该拆成两行,遵循一行只做一件事情。
-
每个模块有个主写,负责主要思路的书写,以及贡献一种语言。
-
有Backup负责帮助其他语言的补充,也避免有事情怕耽误了更新。
-
分支命名以 功能名+用户名 的形式,比如 DFS_fuxuemingzhu。
欢迎大家认领任务,共同贡献。
专题 | 认领情况 | 完成情况 |
---|---|---|
BFS | ||
BitManipulation | ||
DynamicProgramming | ||
Heap | ||
Queue | ||
Sort | ||
Tree | ||
Backtracking | ||
DFS | ||
Graph | ||
LinkedList | ||
Stack | ||
TwoPointers | ||
BinarySearch | ||
Divide&Conquer | ||
HashTable | ||
Math | ||
SlidingWindow | ||
String | ||
UnionFind | ||