为什么说每个程序员都应该刷几道LeetCode?

2015年即将过去,最近在回顾和总结过去一年的工作经历,发现自己并不能算是一名合格的程序员。

 

Google某前员工Lucida在文章《白板编程访谈——Why,What,How》当中写道:

程序员可以被分为两种:

  1. 先确认前条件/不变式/终止条件/边界条件,然后写出正确的代码

  2. 先编写代码,然后通过各种用例/测试/调试对程序进行调整,最后得到似乎正确的代码

     

我个人保守估计前者开发效率至少是后者的10倍,因为前者不需要浪费大量时间在编码-调试-编码这个极其耗时的循环上。

 

很不幸的是,我觉得自己应该被归类到第二种程序员。

 

LeetCode上的题目大多看起来都比较简单,比起大学时候那些ACM大神刷的各大学校OJ都要容易得多。但是,如果要求在限定的时间内,写出一次AC(Accepted)答案就已经难度不小。在这种情况下,还能够做到代码尽量简洁优雅的人就更少了。

 

相比起国内各大著名高校的OJ,为什么我更推荐程序员们选择LeetCode OJ呢?原因有两点:

第一,大学OJ上的题目一般都是为ACM选手做准备的,难度大,属于竞技范畴;LeetCode的题相对简单,更为实用,更适合以后从事开发等岗位的程序员们。

第二,LeetCode非常流行,用户的量级几乎要比其他OJ高出将近三到五个级别。大量的活跃用户,将会为我们提供数不清的经验交流和可供参考的GitHub源代码。

 

刷LeetCode不是为了学会某些牛逼的算法,也不是为了突破某道难题而可能获得的智趣上的快感。学习和练习正确的思考方法,锻炼考虑各种条件的能力,在代码实现前就已经尽可能避免大多数常见错误带来的bug,养成简洁代码的审美习惯。

 

以上,才是每个LeetCoder所应该要追求的东西。

 

 

 

(转发随意,转载请注明作者与博客园原地址)

(我的个人微信公众号:scut_xiaoy,搜索ID或扫描下方二维码添加关注,关注程序员自身成长和互联网时代下的新变化)

                                                                                                                                                                                     

posted @ 2015-12-27 15:01  LevenYes  阅读(7494)  评论(4编辑  收藏  举报