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

准备用 Rust 刷完 Leetcode

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

    一周前学了一点 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   ·   实用小工具   ·   2946 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:17 · PVG 19:17 · LAX 03:17 · JFK 06:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.