• 请不要在回答技术问题时复制粘贴 AI 生成的内容
netcan
V2EX  ›  程序员

Leetcode 的 Rust 解法

  •  
  •   netcan ·
    netcan · Mar 10, 2019 · 6141 views
    This topic created in 2800 days ago, the information mentioned may be changed or developed.

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

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

    20 replies  •  2022-07-23 18:21:32 +08:00
    kiwi95
    kiwi95
    Mar 10, 2019 via Android
    1
    我用 rust 写了一些题,比你这个多一些。链表的题不太好做,其它的用 rust 写非常舒服
    netcan
    netcan
    OP
    Mar 10, 2019
    2
    @kiwi95 握爪,不过我做了一些二叉树相关的比较多
    luozic
    luozic
    Mar 10, 2019 via iPhone
    3
    rust 写 B+/B-树怎么样?
    Kilerd
    Kilerd
    Mar 10, 2019
    4
    leet code 的链表题传入的是 Option<Box<ListNode>> 写起来简直绝望。
    Kilerd
    Kilerd
    Mar 10, 2019❤️1
    5
    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
    netcan
    OP
    Mar 10, 2019
    6
    @Kilerd 这种管理方式看上去不错,因为有时候在公司刷题传不了代码,在家的时候刷题,所以就想到了爬虫收集一波。。。
    kiwi95
    kiwi95
    Mar 10, 2019❤️1
    7
    @Kilerd 我觉得你这个代码结构有点奇怪,我是每个题一个文件做一个 mod,整个是一个项目的

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

    rust 推荐项目都做成 lib,bin 类型只写一个 main 来调用自己的 lib
    Kilerd
    Kilerd
    Mar 10, 2019 via iPhone
    10
    @kiwi95 其实用 workgroup 来做会更好
    d18
    d18
    Mar 10, 2019
    11
    小众语言没办法看速度打败了多少人
    Chingim
    Chingim
    Mar 10, 2019 via Android
    12
    @Kilerd 请教一下你这结构怎么跑? cd 到对应的题目目录下,cargo test?
    trait
    trait
    Mar 10, 2019
    13
    @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
    Chingim
    Mar 10, 2019 via Android
    14
    @trait macos smells good
    netcan
    netcan
    OP
    Mar 11, 2019 via Android
    15
    @d18 哈哈,所以做完一题后,经常发现打败 100%的人,然后一看,这题多半是没人提交。。( leetcode-cn.com 的情况)
    netcan
    netcan
    OP
    Mar 11, 2019 via Android
    16
    @trait .unwrap()也很好用
    netcan
    netcan
    OP
    Mar 11, 2019 via Android
    17
    @Chingim cargo watch -x test
    trait
    trait
    Mar 11, 2019
    18
    @netcan 不,在这个环境下 unwrap 几乎没用,take 的作用是在链表图这种复杂结构题中对抗 borrowck。unwrap 在 rust 工程开发中也不建议用,除非有十足的把握,更多的用于 test
    unforgiven
    unforgiven
    Aug 8, 2019
    19
    @Kilerd 这么久的帖子我都进来了,感受下我的绝望 wtf!Option<Box<ListNode>>
    neteroster
    neteroster
    Jul 23, 2022 via Android
    20
    @unforgiven 时隔两年,我也被 Option<Box<ListNode>> 恶心了一吧,一堆引用看得头大(
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1487 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 14:51 · PVG 22:51 · LAX 06:51 · JFK 09:51
    ♥ Do have faith in what you're doing.