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

Leetcode 的 Rust 解法

  •  
  •   netcan · 313 天前 · 2637 次点击
    这是一个创建于 313 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前正在学习 Rust,发现 Leetcode 上面很多题目都没人尝试用 Rust,这里记录一下使用 rust 刷 Leetcode 的感受,目前仓库位于:https://github.com/netcan/Leetcode-Rust

    仓库自带爬虫,可以抓取个人提交记录中的指定语言部分。

    19 回复  |  直到 2019-08-08 16:22:05 +08:00
    kiwi95
        1
    kiwi95   313 天前 via Android
    我用 rust 写了一些题,比你这个多一些。链表的题不太好做,其它的用 rust 写非常舒服
    netcan
        2
    netcan   313 天前
    @kiwi95 握爪,不过我做了一些二叉树相关的比较多
    luozic
        3
    luozic   313 天前 via iPhone
    rust 写 B+/B-树怎么样?
    Kilerd
        4
    Kilerd   313 天前
    leet code 的链表题传入的是 Option<Box<ListNode>> 写起来简直绝望。
    Kilerd
        5
    Kilerd   313 天前   ♥ 1
    BTW,虽然我的很多题没有更新上 GITHUB,但是你可以看看我的代码结构
    https://github.com/Kilerd/leetcode-rust

    https://github.com/Kilerd/leetcode-rust/blob/master/Cargo.toml#L7 用 dependence 或者 workgroup 来管理每一道题。

    https://github.com/Kilerd/leetcode-rust/blob/master/hamming-distance/src/main.rs#L20

    每一道题里面用 #[test] 来做本地的测试管理,这样就可以用 `cargo watch -x test` 来实时跑代码了。
    netcan
        6
    netcan   313 天前
    @Kilerd 这种管理方式看上去不错,因为有时候在公司刷题传不了代码,在家的时候刷题,所以就想到了爬虫收集一波。。。
    kiwi95
        7
    kiwi95   313 天前   ♥ 1
    @Kilerd 我觉得你这个代码结构有点奇怪,我是每个题一个文件做一个 mod,整个是一个项目的

    https://github.com/wuxu92/leetcode.rs
    netcan
        8
    netcan   313 天前
    @kiwi95 你这应该是做成一个 lib 了吧...
    kiwi95
        9
    kiwi95   313 天前 via Android
    @netcan 是的,应该作为一个 lib,只运行 cargo test 的嘛。

    rust 推荐项目都做成 lib,bin 类型只写一个 main 来调用自己的 lib
    Kilerd
        10
    Kilerd   313 天前 via iPhone
    @kiwi95 其实用 workgroup 来做会更好
    d18
        11
    d18   313 天前
    小众语言没办法看速度打败了多少人
    Chingim
        12
    Chingim   313 天前 via Android
    @Kilerd 请教一下你这结构怎么跑? cd 到对应的题目目录下,cargo test?
    trait
        13
    trait   313 天前
    @kiwi95
    @netcan checkout the .take() method of Option, that's the key for solving such kind of problems in leetcode.
    (sorry for english, IME is broken on my Linux)
    Chingim
        14
    Chingim   313 天前 via Android
    @trait macos smells good
    netcan
        15
    netcan   313 天前 via Android
    @d18 哈哈,所以做完一题后,经常发现打败 100%的人,然后一看,这题多半是没人提交。。( leetcode-cn.com 的情况)
    netcan
        16
    netcan   313 天前 via Android
    @trait .unwrap()也很好用
    netcan
        17
    netcan   313 天前 via Android
    @Chingim cargo watch -x test
    trait
        18
    trait   312 天前
    @netcan 不,在这个环境下 unwrap 几乎没用,take 的作用是在链表图这种复杂结构题中对抗 borrowck。unwrap 在 rust 工程开发中也不建议用,除非有十足的把握,更多的用于 test
    unforgiven
        19
    unforgiven   162 天前
    @Kilerd 这么久的帖子我都进来了,感受下我的绝望 wtf!Option<Box<ListNode>>
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2620 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 03:12 · PVG 11:12 · LAX 19:12 · JFK 22:12
    ♥ Do have faith in what you're doing.