本仓库用来记录各类算法题的常用模板、思路,能让大家更快的刷题!
参加这个开源项目,你将获得:
- ⏳学习和总结了常用的模板;
- 🚀掌握一类题目的解题技巧;
- 📒锻炼了自己的文档书写能力;
- 🏃强化了Git和多人协作方法。
最后的成品会是一个在线知识文档,会说明每个人的贡献哦~ 快加入它✊
加入方式:发邮件至fuxuemingzhu#163.com(#换成@),说明自己的联系方式和认领专题。
- 文档规范:
-
力扣有一个书写文章的规范 https://leetcode-cn.com/circle/article/hipGkf/
文末有一个「中文文案指北」挺重要的,一定要认真看;
-
代码规范:
原则:如果业内有编码规范,需要严格参考编码规范编写代码,避免代码个人风格化。
Java 语言参考《阿里巴巴 Java 开发手册》(https://github.com/alibaba/p3c)。
以下没有列出的语言,请各位老师自行根据掌握的知识修改。
- 写「参考代码」或者是「模板代码」的时候,用编辑器写(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 | liweiwei1419 | 80% |
Divide&Conquer | ||
HashTable | ||
Math | 已认领 | |
SlidingWindow | 已认领 | |
String | 已认领 | |
UnionFind | 已认领 | |
SegmentTree | 已认领 | |