比起推荐书籍,我认为想用最快的速度提高自己的Coding Style,最粗暴、高效的方式就是套模板!
先介绍下我的基本情况:北大CS本科,ACM算法竞赛金牌,毕业后在FaceBook敲了7年的代码,manager每review我的代码,都会给很好的Feedback:
你写的代码可读性好、简洁,单这一点其实很多程序员都做不好
关于提高代码质量,我总结了这些年打ACM竞赛&大厂工作的经历,爆肝3个月、增删16次的总结的算法模板cheatsheetV5.0
面试常考算法模板cheatsheetV5.0
想学习了解具体提高代码质量的细节,建议去试听一下我针对今年大厂秋招形式的**算法面试公益讲座**,新人注册即可免费试听第一节download这个模板,建议感兴趣的小伙伴免费体验!
我在“算法面试公益讲座——如何提高你的代码质量”中提出了一些观点:
优秀的Coding Quality包括:
Bug Free
不管有没有可能出问题,都要对入口函数的参数进行异常检测
访问一个下标的时候,一定要确保这个下标不会越界
访问一个对象的属性或者方法时,一定要确保这个对象不是空
不用全局变量
……
好的Coding Style
二元运算符两边加空格,单元运算符不加空格
花括号和 for, if 之间要加空格(Java),圆括号和 if 之间要加空格
……
容易让人读懂的逻辑
没有冗余代码
有边界检测和异常处理
想进大厂,代码质量(Coding Quality)优秀是基本要求。这个模板总结了双指针、排序算法、二叉树、宽度优先搜索、深度优先搜索等大厂常考算法的使用条件、时间复杂度、代码模板,很多人都反馈过:能粗暴、有效的提升Coding Style!
Fake it,until you take it. 想写出漂亮的代码同理,我们来看看二分法怎么套模板写出简洁优雅的代码:
- ⼆分查找(在排序的数据集上进行二分)
- 在排序数组中找最接近的K个数(在未排序的数据集上进行二分)
- 书籍复印(在答案集上进行二分)
如果你是Java程序员,看这里:![在这里插入图片描述](https://img-blog.csdnimg.cn/cbd9120f46b241a4adc1c4853465ee9e.png)
如果你是Python程序员,看这里:
最后,奉上我整理的一些搭配算法模板的LintCode练习题,请安心食用~
深度优先搜索:
子集
图是否是树
因式分解
子数组之和
K数和
电话号码的字母组合
二叉树:
寻找重复的子树
二叉树的后序遍历
找出树中每行的最大值
二叉树的所有路径
[对称树]
宽度优先搜索:
安排课程
岛屿的个数
拓扑排序
最大子数组差
序列重构
贪心:
会议室
最大乘积
最大子数组差
俄罗斯套娃信封
加油站
二分法:
经典二分查找问题
寻找峰值
最长上升子序列
搜索旋转排序数组
最后最后,补充一句:不建议新手一上来就刷leetcode,题库太大,且同考点题目冗杂!建议使用国内炼码(lintcode),按照考点划分的题库,效率高达刷1道等于在leetcode刷3道,收录了名企的面试题集,非常针对大厂的算法面试。
**
LintCode 炼码vip免费兑换页面
**
当然,用书籍培养代码质量思维也是很不错的,但比较适合想要徐徐图之、空闲时间多的人,这里推荐《代码整洁之道》