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

                                                                                                                                                                                         

  • 相关阅读:
    Eclipse出现Access restriction : The type BASE64Decoder is not accessible due to restriction问题
    Struts学习总结(1)
    TCPMon使用总结
    AJAX入门学习总结
    JSON for java入门总结
    JSTL使用总结(2) fmt标签库和fn标签库
    JSTL使用总结(1) 核心标签库和SQL标签库
    JavaScript学习总结
    Ant学习总结
    C# .NET中如何使用GetCursorPos函数
  • 原文地址:https://www.cnblogs.com/levenyes/p/5080120.html
Copyright © 2020-2023  润新知