准备用 Rust 刷完 Leetcode - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rayingecho
V2EX    LeetCode

准备用 Rust 刷完 Leetcode

  •  
  •   rayingecho
    aylei 2019-01-21 02:16:36 +08:00 22542 次点击
    这是一个创建于 2522 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一周前学了一点 Rust 的皮毛, 手头没啥可以实践的项目, 想了想反正自己也没刷过 OJ, 就试试看最有名的 Leetcode.

    没想到一刷就停不下来了, Leetcode 这玩意儿比游戏还毒, 反馈迅速, 快感强烈, 尤其是用 Rust 每次做完之后的运行时间都是 "0 ms","4 ms" 之类的. 看着 Beats 100% 快感油然而生...

    不过也因为 Rust 本身的特性吃了踩了一些坑: 一开始做链表类题目的时候, 因为对 Onwership 理解不到位, 基本是处于被编译器吊打一晚上的状态. 期间还问了一个非常愚蠢的问题, 被狂喷之后又看了一遍 the book 里 ownership 相关的章节才算摸到了一点门道.

    这一周总结下来就是 Leetcode 真好玩(一周没碰 Artifact 了哈哈哈), Rust 真香, 同好可以留言交流.

    最后是项目仓库. 当然目前还只做了 30 题不到, 本来想至少做够 100 题再分享的, 不过项目里写了一点辅助代码来生成题目模板和帮助做本地单测, 寻思着指不定就能帮上谁, 也就厚颜无耻地放链接了:

    github: https://github.com/aylei/leetcode-rust

    16 条回复    2019-08-09 11:16:37 +08:00
    Sparetire
        1
    Sparetire  
       2019-01-21 03:43:02 +08:00 via Android
    同样也是打算用 Rust 刷题,初学 Rust,刚看完枚举,本以为像当初 C 学完指针和结构体就能写个链表出来,结果发现目前用 Rust 连个链表都写不出。。感觉自己菜破天际。。
    Allianzcortex
        2
    Allianzcortex  
       2019-01-21 04:01:57 +08:00
    我猜不是所有题目都支持 Rust 的(发现 Go 有不支持的,589/590 )
    Vegetable
        3
    Vegetable  
       2019-01-21 08:10:31 +08:00 via iPhone   1
    g 胖没想到自己输给了 leetcode
    gimp
        4
    gimp  
       2019-01-21 08:51:13 +08:00
    正好需要,star 了
    trait
        5
    trait  
       2019-01-21 09:01:05 +08:00 via iPhone   3
    rust 不对 borrowchecker 有深刻的理解,链表树图刷题劝退属性点满,跟编译器斗争的时间远超算法本身
    leetcode 给的这链表树结构声明太随意,坑比较多,楼主后期可能还会遇到不少,给个 tip,去看下标准库的 take(), swap()和 mem 里的几个方法,会帮你节省时间
    trait
        6
    trait  
       2019-01-21 09:02:18 +08:00 via iPhone   1
    还有 refcell rc 这几个智能指针,以及 borrowchecker 两大原则
    Moming
        7
    Moming  
       2019-01-21 09:24:09 +08:00
    感觉刷题不如抄代码能感受新特性……我用 Python 刷到后面就写了几个 snippets 搞定了常用的数据结构,题目样式没有太大的变化。
    Rust 有很多不错的项目,提提 PR 也挺好玩的。
    rayingecho
        8
    rayingecho  
    OP
       2019-01-21 11:00:38 +08:00   1
    @Sparetire
    一开始我也是这种感觉, 后来发现 Rust 写链表确实是个坎, 可以看看 [Learning Rust With Entirely Too Many Linked Lists]( https://cglab.ca/~abeinges/blah/too-many-lists/book/)
    rayingecho
        9
    rayingecho  
    OP
       2019-01-21 11:01:25 +08:00
    @gimp
    感谢鼓励
    rayingecho
        10
    rayingecho  
    OP
       2019-01-21 11:18:00 +08:00
    @trait
    不能更赞同, 跟链表斗争能很好地检验对 borrow checker 的理解...
    rayingecho
        11
    rayingecho  
    OP
       2019-01-21 11:19:34 +08:00
    @Moming
    感觉自己太菜了, 看到 rust 项目的 Help Wanted issue 都不太好意思下手
    Moming
        12
    Moming  
       2019-01-21 12:56:26 +08:00
    @rayingecho 同感,很多项目都只有给别人打 call 的份
    sherlockgy
        13
    sherlockgy  
       2019-01-31 17:28:36 +08:00
    谢了!
    lynskylate
        14
    lynskylate  
       2019-01-31 20:47:48 +08:00 via Android
    @trait 好建议,刚开始刷不会 mem:replace,写了一堆 unsafe
    Simula411
        15
    Simula411  
       2019-06-13 02:17:42 +08:00 via Android
    9012 年 6 月了,楼主是那 200 强者之一吗?
    unforgiven
        16
    unforgiven  
       2019-08-09 11:16:37 +08:00
    @trait 正在被劝退的途中,148 题让我要爆炸了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2845 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 14:21 PVG 22:21 LAX 06:21 JFK 09:21
    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