zoukankan      html  css  js  c++  java
  • 为什么说每个程序员都应该刷几道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或扫描下方二维码添加关注,关注程序员自身成长和互联网时代下的新变化)

                                                                                                                                                                                         

  • 相关阅读:
    Django之数据库表的创建和ORM相关操作
    Django后续和Ajax初识
    阿里云Maven中央仓库配置
    java/javascript 时间操作工具类
    原生javascript实现文件异步上传
    MySQL中的存储函数和存储过程的简单示例
    java同步锁的正确使用
    浅谈javascript的面向对象思想
    java与javascript对cookie操作的工具类
    json字符串与json对象的相互转换
  • 原文地址:https://www.cnblogs.com/levenyes/p/5080120.html
Copyright © 2011-2022 走看看