Leetcode 的 Rust 解法

2019-03-10 18:06:59 +08:00
 netcan

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

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

4783 次点击
所在节点    程序员
20 条回复
kiwi95
2019-03-10 19:22:38 +08:00
我用 rust 写了一些题,比你这个多一些。链表的题不太好做,其它的用 rust 写非常舒服
netcan
2019-03-10 20:17:44 +08:00
@kiwi95 握爪,不过我做了一些二叉树相关的比较多
luozic
2019-03-10 20:47:50 +08:00
rust 写 B+/B-树怎么样?
Kilerd
2019-03-10 21:29:05 +08:00
leet code 的链表题传入的是 Option<Box<ListNode>> 写起来简直绝望。
Kilerd
2019-03-10 21:32:10 +08:00
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
2019-03-10 21:53:31 +08:00
@Kilerd 这种管理方式看上去不错,因为有时候在公司刷题传不了代码,在家的时候刷题,所以就想到了爬虫收集一波。。。
kiwi95
2019-03-10 22:10:40 +08:00
@Kilerd 我觉得你这个代码结构有点奇怪,我是每个题一个文件做一个 mod,整个是一个项目的

https://github.com/wuxu92/leetcode.rs
netcan
2019-03-10 22:26:41 +08:00
@kiwi95 你这应该是做成一个 lib 了吧...
kiwi95
2019-03-10 22:35:20 +08:00
@netcan 是的,应该作为一个 lib,只运行 cargo test 的嘛。

rust 推荐项目都做成 lib,bin 类型只写一个 main 来调用自己的 lib
Kilerd
2019-03-10 23:05:18 +08:00
@kiwi95 其实用 workgroup 来做会更好
d18
2019-03-10 23:32:45 +08:00
小众语言没办法看速度打败了多少人
Chingim
2019-03-10 23:52:44 +08:00
@Kilerd 请教一下你这结构怎么跑? cd 到对应的题目目录下,cargo test?
trait
2019-03-10 23:53:42 +08:00
@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
2019-03-10 23:55:45 +08:00
@trait macos smells good
netcan
2019-03-11 08:31:56 +08:00
@d18 哈哈,所以做完一题后,经常发现打败 100%的人,然后一看,这题多半是没人提交。。( leetcode-cn.com 的情况)
netcan
2019-03-11 08:56:21 +08:00
@trait .unwrap()也很好用
netcan
2019-03-11 08:59:48 +08:00
@Chingim cargo watch -x test
trait
2019-03-11 13:56:00 +08:00
@netcan 不,在这个环境下 unwrap 几乎没用,take 的作用是在链表图这种复杂结构题中对抗 borrowck。unwrap 在 rust 工程开发中也不建议用,除非有十足的把握,更多的用于 test
unforgiven
2019-08-08 16:22:05 +08:00
@Kilerd 这么久的帖子我都进来了,感受下我的绝望 wtf!Option<Box<ListNode>>
neteroster
2022-07-23 18:21:32 +08:00
@unforgiven 时隔两年,我也被 Option<Box<ListNode>> 恶心了一吧,一堆引用看得头大(

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/543059

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX