准备用 Rust 刷完 Leetcode

2019-01-21 02:16:36 +08:00
 rayingecho

一周前学了一点 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

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

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

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

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

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

© 2021 V2EX