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

刷 leetcode 的正确姿势?

  •  
  •   btv2bt · 2019-12-25 00:11:29 +08:00 · 7739 次点击
    这是一个创建于 1795 天前的主题,其中的信息可能已经有所发展或是发生改变。

    迫于找工作,在刷 leetcode,每天晚上能刷 1 到 medium 的题吧;

    但是发现一个问题:稍微麻烦点的就需要半小时以上,接近一个小时,才能写出一个可能还不是很完美的答案。完成后会看一下别人的讨论。 这样一晚上的时间可能就没了……

    所以刷 leetcode 的正确姿势是什么? 有没有什么套路

    41 条回复    2020-07-08 21:17:06 +08:00
    wangyzj
        1
    wangyzj  
       2019-12-25 00:27:20 +08:00
    半小时一个 medium
    大佬,受我一拜
    btv2bt
        2
    btv2bt  
    OP
       2019-12-25 00:34:38 +08:00 via Android
    @wangyzj 并没有...平均可能 1 小时以上了;写出来的还很丑陋,不然就不来问了 😔
    wangyzj
        3
    wangyzj  
       2019-12-25 00:41:18 +08:00   ❤️ 4
    @btv2bt 想过一天也憋不出一个的噩梦么。。。。
    octobersnow
        4
    octobersnow  
       2019-12-25 00:50:12 +08:00 via iPhone
    我觉得,十分钟没思路就看别人的,有思路顺着自己四路写?
    lihongming
        5
    lihongming  
       2019-12-25 00:52:23 +08:00 via iPhone   ❤️ 2
    我的方式是——每天解一道题,实在想不出来的就先跳过去,时间太晚了就先到后面找一道 easy 的。总之无论如何,每天确保一道,有个任务,给自己点压力,才能不放弃。

    解法可以不是最优,哪怕 brute force 也得解出来(通常无法直接通过,肯定超时了,但加点缓存,或者跳过明显不可能的情况,优化一下可过)。这样做的目的是,通过以后就可以看别人的答案了。

    看看最优解的思路是什么,理解下来,先不急着模仿,第二天再试着实现。如果还能写出来,这个算法基本上就算学会了,以后遇到类似的题就都会解了。

    如此坚持 100 天,你就会发现,大部分题就是围绕那么十几种思路排列组合,初期那种无从下手的感觉就没那么强烈了(当然还是有少部分题非常新颖,需要学习)。这个阶段就是提高阶段了,虽然是十几种常见思路的排列组合,但哪种组合最优,仍需要经验的积累。
    GenialX2
        6
    GenialX2  
       2019-12-25 00:55:13 +08:00
    关于 LeetCode 如何刷,我之前写了一篇文章,愿与君共勉: https://qoogle.top/how-to-brush-leetcode/
    WhoMercy
        7
    WhoMercy  
       2019-12-25 01:08:19 +08:00 via Android
    @GenialX2
    不知道你现在刷题的进度、学习的程度怎么样了?

    开通了会员还有其他感觉便利的地方吗?(也许等我要面某几家外企的时候会开一下,针对企业的题库来刷刷题
    codewarrior
        8
    codewarrior  
       2019-12-25 03:58:03 +08:00 via Android
    多刷几遍。不要羞于看答案,十分钟想不出来就去看答案。看完思路自己写,写完了再和别人的高分答案对比。第一遍确实很难基本上都要看答案,感觉智商被碾压。做 200 道之后就会慢慢归纳,比如 dfs/bfs 的标准写法,面试遇到这种类似的题比如 count of island 直接动手五分钟写完。
    RtIHZ
        9
    RtIHZ  
       2019-12-25 04:29:24 +08:00
    直接看答案,独立思考没一点用
    tianshilei1992
        10
    tianshilei1992  
       2019-12-25 05:16:09 +08:00 via iPhone
    不会的看答案,然后做完了总结一下,比如写个博文啥的。
    20015jjw
        11
    20015jjw  
       2019-12-25 05:34:54 +08:00 via Android   ❤️ 1
    @GenialX2 brush 可还行
    shiji
        12
    shiji  
       2019-12-25 06:20:53 +08:00
    刷到竞赛每次基本都能做完四道题,就可以去大厂面试了。
    fanqianger
        13
    fanqianger  
       2019-12-25 06:33:13 +08:00
    可以参考我的视频,希望对你有帮助
    &lc=z23aujfjltb0cvs3zacdp432fqfe1bijk0v2p1ikutdw03c010c
    mcrwayfun
        14
    mcrwayfun  
       2019-12-25 07:31:37 +08:00 via iPhone
    梳理问题,独立思考 10 分钟。10 分钟后得不到正确答案就看解答,按照正确的把流程写完。最好是一类题来刷,形成解题思路
    kevindu
        15
    kevindu  
       2019-12-25 07:49:30 +08:00
    leetcode 解题思路就那么多,都是套路,慢慢总结吧
    charlie21
        16
    charlie21  
       2019-12-25 07:52:33 +08:00 via Android
    理解了 xx 之后,yy 就好做了。去理解 xx 先,那么。xx 是存在的
    yukiloh
        17
    yukiloh  
       2019-12-25 08:01:33 +08:00 via Android   ❤️ 1
    最可怕的是看了最优解都不知道他在说啥
    tt67wq
        18
    tt67wq  
       2019-12-25 08:33:29 +08:00
    楼主可以去刷 euler project
    一个月一题
    likefly
        19
    likefly  
       2019-12-25 08:37:23 +08:00
    我都是一天一道题,花半天自己想和优化,再花半天去理解更好的解题方式并自己融会贯通
    realkenshinji
        20
    realkenshinji  
       2019-12-25 08:52:32 +08:00 via iPhone
    正常的,一开始会特别慢,刷一阵子就好了,刷题累了可以看看 b 站花花酱的视频,总结了一些模版套路啥的
    magic3584
        21
    magic3584  
       2019-12-25 10:10:57 +08:00
    楼上的是都开了会员吗看答案?
    btv2bt
        22
    btv2bt  
    OP
       2019-12-25 10:27:24 +08:00
    @wangyzj 这种情况还是有的……一般 hard 的会先掠过
    @lihongming 嗯,我也是每天一道,easy 的或者 medium 的;第二天重新写的这个学到了
    @GenialX2 好的,学习一下
    @codewarrior 10 分钟吗😂
    @RtIHZ 怎么说呢?意思是大部分都是套路,或者需要证明的一些数学思路?
    @shiji 这个还有点距离…
    @fanqianger mark,后面看
    @yukiloh 有些感觉是数学证明……
    @tt67wq 一个月一题?我搜一下
    @likefly 我也是 1 天 1 个…就是觉得一个多小时写出来一个看上去很丑的可能还超时有点蛋疼
    @realkenshinji 我去瞅瞅
    btv2bt
        23
    btv2bt  
    OP
       2019-12-25 10:27:51 +08:00
    @magic3584 一般看讨论区就好吧
    fank99
        24
    fank99  
       2019-12-25 10:52:53 +08:00
    如果之前没太多经验的话,我觉得先过一遍剑指 offer 比较好
    剑指 offer 里的题基本包含了大部分类型,而且难度也不低

    把剑指 offer 里的吃透,再去刷题,就会有原题模型的概念
    会发现很多题都是一个路子,一种模式,只是有不同的变换
    这样来做会好一些
    Mrun
        25
    Mrun  
       2019-12-25 11:05:00 +08:00
    只能死命的刷了,不要羞于去看答案
    magic3584
        26
    magic3584  
       2019-12-25 11:09:37 +08:00
    @btv2bt 嗯,我现在还在 explore 里学,那里面有的东西需要会员。。。
    ihavecat
        27
    ihavecat  
       2019-12-25 11:17:23 +08:00
    刚开始我也是这样,后来答案看多了,发现大致就那几种思路,多活学活用就号了
    hehheh
        28
    hehheh  
       2019-12-25 11:24:49 +08:00
    @magic3584 去 discussion 也可以看到其他人的解法。
    hehheh
        29
    hehheh  
       2019-12-25 11:25:34 +08:00
    前 200 道不懂看答案,到后边的话看不懂的题就少了,因为基本套路就那些。
    quadrapop
        30
    quadrapop  
       2019-12-25 11:30:46 +08:00
    刷想写看学
    zke1e
        31
    zke1e  
       2019-12-25 13:54:54 +08:00
    很多 medium 都有一套前置的 easy,可以先刷 easy 再刷 medium。按照一个类型的刷,每个类型刷个几十道就熟悉了,基本上遇到新的几分钟就能写出来。
    RedisMasterNode
        32
    RedisMasterNode  
       2019-12-25 14:19:30 +08:00
    刷 Top 100 Like


    最开始:20 分钟一道 Easy (可能写不出来 /很差的解法),Medium 基本做不了,Hard 基本直接跳过
    这个阶段一般全靠看答案和看 Discussion。很多解法思路都很新颖(对于我来说),然后务必要理解,对自己要要求没有提示的情况下能把思路默写对

    中期:20 分钟一道 Medium,也有不会做的,因为 LC 一般思路不对的话只会越写越混,写到最后越来越长(因为思路不对就会有很多异常的 Case 要手动处理),一般超过 20 分钟直接去看答案了,还是一样的要求要理解

    现在:刷过 100 道了,现在 Medium 没见过的一般 20 分钟能够写出正确解,优解看脸,平均保持 Python 用时能过 70%。少量情况第一次就能直接过 90%。Hard 的题一般比较难想对,做出来就可以,不用要求太高,但是做不做得出来都要去核对优解的方案,实践一次
    RedisMasterNode
        33
    RedisMasterNode  
       2019-12-25 14:21:54 +08:00   ❤️ 1
    然后补充一下求职前的一段时间每天保持 5 道题左右的时间应该差不多,需要积累一些刷题的熟练度,包括一些定式,比如 DP、DFS 这种都是固定的格式,要可以快速流畅地敲出来,然后补充核心部分。5 道题可以是 3 道新的,2 道昨天做不出来的复习一下这样搭配。

    如果是还没毕业的应该每天会有更多时间,抽 2 小时出来 5 道题绰绰有余
    jingcoco
        34
    jingcoco  
       2019-12-25 14:49:07 +08:00
    大神们如何评论 codewars 的呢?
    sethverlo
        35
    sethverlo  
       2019-12-25 14:50:19 +08:00
    一晚上一道 medium 还嫌慢,退群了……
    cribug8080
        36
    cribug8080  
       2019-12-25 14:53:29 +08:00
    刷着刷着就快了
    fishofcat
        37
    fishofcat  
       2019-12-25 16:21:53 +08:00
    刷题自己把自己的丑代码写好后再去看题解,尤其很多大神对题目的归类,那是真牛逼!!

    我自己也在刷

    https://github.com/wenxuwan/leetcode
    nanoha
        38
    nanoha  
       2019-12-25 16:30:18 +08:00
    看你目的了 有段时间我无聊就是当作 polybridge 这样的游戏在玩 哪怕一天一个题也挺有意思 纯粹享受思考的乐趣
    mcone
        39
    mcone  
       2019-12-25 16:54:55 +08:00
    @wangyzj 经常憋不出来……
    tonytonychopper
        40
    tonytonychopper  
       2019-12-26 09:10:43 +08:00 via Android
    我刷了两百多道题,现在动归和递归基本能写出来
    geemaple
        41
    geemaple  
       2020-07-08 21:17:06 +08:00
    不停刷就是正确姿势把,多交流,自己 python 和 cpp 的
    https://github.com/geemaple/algorithm
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2709 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:56 · PVG 17:56 · LAX 01:56 · JFK 04:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.