刷 leetcode 的正确姿势? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
btv2bt
V2EX    程序员

刷 leetcode 的正确姿势?

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

    迫于找工作,在刷 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 天,你就会发现,大部分题就是围绕那么十几种思路排列组合,初期那种无从下手的感觉就没那么强烈了(当然还是有少部分题非常新颖,需要学习)。这个阶段就是提高阶段了,虽然是十几种常见思路的排列组合,但哪种组合最优,仍需要经验的积累。
    t9ouKal33vGEZyf5
        6
    t9ouKal33vGEZyf5  
       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
    直接看答案,独立思考没一点用
    shiltian
        10
    shiltian  
       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 站花花酱的视频,总结了一些模版套路啥的
    rrubick
        21
    rrubick  
       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
    只能死命的刷了,不要羞于去看答案
    rrubick
        26
    rrubick  
       2019-12-25 11:09:37 +08:00
    @btv2bt 嗯,我现在还在 explore 里学,那里面有的东西需要会员。。。
    ihavecat
        27
    ihavecat  
       2019-12-25 11:17:23 +08:00
    刚开始我也是这样,后来答案看多了,发现大致就那几种思路,多活学活用就号了
    hehheh
        28
    hehheh  
       201-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
    一晚上一道 meium 还嫌慢,退群了……
    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     Solana     5372 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 06:40 PVG 14:40 LAX 22:40 JFK 01:40
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86