首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

刷题(leetcode 等)对提高编程水平有帮助吗?

  •  
  •   ericgui · 115 天前 · 5387 次点击
    这是一个创建于 115 天前的主题,其中的信息可能已经有所发展或是发生改变。
    不讨论对进入大公司是否有帮助,这是另一个话题。

    就讨论是否对自己写代码有帮助

    有人愿意分享一下吗?谢谢
    41 回复  |  直到 2018-09-18 05:04:29 +08:00
        1
    cs923   115 天前 via Android
    算法渣,也是最近才开始准备刷 leetcode,目标是今年刷满 100 道。
    帮助我觉得肯定是有的:
    1.可以让自己思维保持活跃
    2.强化了自己对基本数据结构练习和理解
    3.一般会考虑多种可能的情况,让思维更加缜密
        2
    lsmgeb89   115 天前
    有啊,北美这边算法题是重要的面试部分,senior 跳槽也要过这关,国内现在也开始流行这个了。
        3
    ericgui   115 天前
    @lsmgeb89 你看你看,跑题了吧兄弟,我说的是对实际写代码是否有帮助。这真是另一个话题,而且会引战。
        4
    agagega   115 天前 via iPhone
    或多或少有一点吧,逼着自己考虑 corner case 然后先实现
        5
    Hsinyao   115 天前 via iPhone
    我个人感觉对工程能力提升有限,但是多了解这些东西能拓宽写代码时的思路,对个人思维广度深度也有训练提升作用
        6
    lsmgeb89   115 天前
    @ericgui 还是有帮助的,从两方面来谈:

    1. 工作确实需要
    如果你做的不是 call call API,写几个 for while 的活的话。

    例如在大厂的核心组,算法还是天天用的。

    主要看你的能力和视野了,如果你能走的越高,越远,算法就越有用。

    2. 就算法训练本身来说
    其实算法主要是训练你的逻辑,分析问题的能力,而且复杂度分析什么的,对你写代码,优化代码的性能还是很有帮助的。

    其实编程除了业务逻辑外,就是算法了,可以说是寸步不离。
        7
    msg7086   115 天前   ♥ 3
    比如你日常开发写出来的代码是 O(nlogn) 还是 O(n^3)?
    比如你要做数据转换处理的时候是开个数组狂撸还是聪明地去使用树 / 堆 / Map 等结构?
    比如你要做大量数据计算的时候是开个循环跑还是分治一下多线程 MapReduce ?

    这些看似无所谓的细节,可以让两个人的代码质量差距变得非常大。
        8
    vegito2002   115 天前 via iPhone
    取决于个人水平。打一次 contest。如果能打进前 200,刷太多对你提升就不大了
        9
    muziki   115 天前 via iPhone   ♥ 1
    以我这两年给大型 oss 混 pr 的经历而言,我觉得没有,那东西纯粹就是为面试突击准备的

    再实际编程中那点刷题经验不值一提,作为从业人员,大多数人都有资料备齐的情况下实现算法原型的能力,但离系统可用性差太远,这不是刷题能解决的

    貌似 Linus 说过烂程序员关心的是代码,好程序员关心的是数据结构和它们之间的关系

    刷题对这种“关系”的把握帮助不大
        10
    muziki   115 天前 via iPhone
    想要提高水平,多去参与优秀的开源项目提 PR,体会一下那些项目的精美之处,一味地刷题,跟小朋友在老师教完 10 内加减法之后不停地练习 1+1=? etc 没多大区别,因为就算以纯算法练习来说那些东西知识范围也有限
        11
    pkookp8   115 天前 via Android
    用肯定有用,至于效果
    一个人写项目用了个快排
    另一个人先用冒泡实现,后来优化的时候学了下排序,换成了快排
    另一个人用冒泡实现,后来就没有优化了
    可能就是这种差别吧
        12
    simpleman   115 天前 via Android
    目前刷了有 100 来道了,感觉自己 stl 用的熟练了😀
        13
    nl101531   115 天前 via Android
    个人认为: 日常业务开发更注重设计模式,算法提升确实不大。不过常刷题能保持思维活跃,没事还是要刷的。。。
        14
    vansl   115 天前 via iPhone
    @simpleman 对于 Javaer&pythoner 熟悉 STL 有什么好处吗?
        15
    yxcoder   115 天前
    感觉应该还是有的,在 OJ 上面做过一段时间的题,感觉对于各种边界判断和代码优化方面帮助还是比较大的,做这些题不是说在工作中非要把代码优化到什么程度,而是培养从不同角度考虑问题的思维
        16
    ghostgril   115 天前
    对面试具有很好的帮助
        17
    mseasons   115 天前
    @cs923 一百道 easy 级别的几天就刷完了
        18
    3dwelcome   115 天前
    刷难题,对能力提升肯定会有一点帮助的,但效果没那么显著,因为你刷着刷着,就会为了解题而去思考。而不是为了提升能力,这就是应试教育和素质教育的区别。
    个人感受而言,有时间多钻研 github 上自己感兴趣的优秀开源项目,提升效果最好。其次是小型代码竞赛,最后才是刷题。
        19
    qdzzyb   115 天前
    先把边界条件想明白再实现
        20
    karllynn   115 天前
    基本没有。。。不过有些业务还是可以用到复杂算法的
        21
    fcoolish   115 天前
    有用啊
        22
    youxiachai   115 天前
    如果,,你没有被的什么事情的话..
    刷题.可以保持你的编程感觉...
    重要的是..你除了刷题,还有没有其他事可以做..
        23
    yazoox   115 天前 via Android
    个人意见,最大的用处就是面试了吧。因为这个比较客观,好评价,好衡量。
    但我工作这么多年 10+,真正需要用到那些算法的情况,屈指可数。当然,我本来也就不在算法组工作。
        24
    depress   115 天前
    帮助是肯定有帮助,但是有帮助和用得上没法划等号。这个帮助可能是隐性的,你没发现,但实际上已经有提高,也可能好几年才能碰上一回。注不注重这个东西,还是要看四象限法则,如果目前工作不需要,那还是要把精力放在别处,如果有额外精力和时间,搞一搞算法没坏处。
        25
    cs923   115 天前 via Android
    @mseasons 我是挨着挨着刷的 而且刷题时间很少
        26
    kera0a   115 天前
    有用的,开拓眼界
    算法其实是解决现实中的问题的。
    碰到了某些问题可能会想到用某些算法类似的思路去解决,学肯定不吃亏啊
    刷题就是强化你这种能力
        27
    codeyung   115 天前
    说实话 就是补补你之前上学没学好的 练练逻辑
    其次 主要的还是面试用的 ... 没别的了
    easy 都刷了 剩下的看看 一般就 ... 不说了
        28
    dychenyi   115 天前
    工作十多年的了,用到排序基本是写自己的比较函数给 std::sort 而已。
    想要快速查找用 hash,map,不够用再嵌套,一般存储用 list,vector 够用。工作还是比较低级。
    哎。
        29
    htfy96   115 天前   ♥ 1
    边际效应递减
        30
    lzhCoooder   115 天前
    有用的,题刷多了心里更容易把握好空间复杂度和时间复杂度这两把尺子
        31
    ssynhtn   115 天前
    没有
        32
    soulmine   115 天前
    对你写业务代码没有 你写的代码是用的不是来炫技的 举个例子 你去 python 里面写个 lamba 试试
    但长期来说 是有的
        33
    dong3580   115 天前
    对写代码基本没用,算法都是成熟固定的那几个,没什么好改的,除非你能证明你的方式更高效,然而没人轻易采纳你的。只对面试造火箭有用,
        34
    hotdogwc   115 天前
    @muziki 比如哪些项目呢?大到什么程度的,现在我都参与一些似乎没那么大的...
        35
    shiguiyou   115 天前
    有区别的,以前我只知道个 ArrayList,学习了数据结构和算法才发现很多东西可以用堆栈,链表等数据结构来解决的,还有平时肯定会遇到一些小型的计算等,可以用算法完美实现的,能力上别人一看就不是一个层次的。
        36
    wellsc   115 天前 via iPhone
    对提高编码肌肉记忆有帮助,对面试也有帮助,对提升 cs 知识水平帮助不大。
        37
    yhvictor   115 天前
    刷题不清楚,不过搞 ACM 对于代码调试帮助还蛮大的。现在组里现在碰到不好解决的 bug 都丢给我,捂脸。
        38
    orangeade   115 天前
    刷题可以熟悉新语言
        39
    RedStrings   113 天前 via Android
    @muziki 但是他的代码也比大多数人强啊。
        40
    Acceml   24 天前
    我觉得对工程能力是没帮助的,这是两个不同的领域。但是对于应届生扎实编程基础,锻炼编程思维,我觉得没有比这种方式更好的了。
    ——————————————————
    有兴趣的老铁可以关注我的公众号:Leetcode 名企之路,每天更新一道 Leetcode 题解,一起进步。
        41
    ailionx   2 天前
    我觉得非常有帮助。刷了一些同事配合上温习数据结构和算法,就感觉编程能力有很大的进步。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2051 人在线   最高记录 3762   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 20ms · UTC 15:16 · PVG 23:16 · LAX 08:16 · JFK 11:16
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1