踏入 LeetCode 的第一步 - 操作与使用

初探 LeetCode 的操作与使用

注册登入 LeetCode 之後,可以从 Problems 页面中浏览目前所有的题目列表:

每一个题目包含「答对率」及「难易度」,部分题目提供「参考解答」,付费解锁可以取得「常考频率」。若你没有急迫的刷题区需求或是特定的练习类型的话,根据难易度逐步刷也是一种蛮好的策略。其实是作为一种长期练习为目的话,适合打散热门与分类进行无差别的刷题。这种情况下,可以使用 LeetCode 提供的「难易度」与「通过率」两个指标排序,从简单且很多人都通过的题目慢慢往比较难的题目开始逐步进行。

「题目描述」告诉与没告诉你的事

每一个题目的介面分成为左方的「题目描述」,右上的「程序码」与右下的「执行结果」三个区域。「题目描述」区块中会先提供一个简单的问题描述(通常就是一个引言),技术或应用描述的方式都有。通常会有简单的范例,这个例子而言就提供三个范例提供参考,包含 Input 与 Output。如同前面所讲的所谓的写程序就是利用电脑的记忆与运算,根据 Input 产生 Output 的过程,而 LeetCode 则是要我们实现一个程序或演算法在有限步骤与时间内完成从输入到输出的过程中。

从左方的「题目描述」的范例再往下滑一点,还有几个是你容易错过的小细节:

第一个是题目的限制,通常会包含题目输入范围以及规定题目要求输出的时间或是空间上的规定。如同我们前面所说,当我们面对一个题目的时候有三个重点需要确认:

① 题目的输入与输出范围
② 输入范围中极端的边界条件(或是特例)
③ 所可以接受的时间/空间复杂度

有些题目并不会把这三个重点写得很明确,可能需要多方推敲。不过这三个 必须要注意的事项 就是题目描述之外,你需要特别留意的。有些题目会有 Follow-up ,这里会给些可以进一步思考的点或是要求,但通常不是严格的规定(就是让你玩玩的)。另外在最下方的地方会有该题目的类似题或是提示,都是你在练习的过程时可以看看的。

从测试到缴交

右上的「程序码」的程序码可以选择不同的程序语言进行练习,平台目前支援 C/C++、Python、JavaScript ... 等共计 18 种的程序语言,可以参与需求选择想要练习的程序语言。不同的语言主要的差异在於执行的速度有根本上的差异或是不同语言也有自己的特色用法,但基本的思考运算逻辑则是可以通用的。右下的「执行结果」有两种提交方式,「Run Code」的话只会执行题目中比较基本的测试案例(Test Case),让你快速看一下逻辑是否符合题意;「Submit」会完整提交,会去检查该题目所有的测试案例,通常会包含比较极端或是特殊的输入值。提交後的 Submissions 会简单的统整你的解法在所有程序中的比例,还有程序时间与占用的记忆体空间:

解完题後的下一步?

完成一个题目之後,请先透过结果的时间花费与空间占用恒量自己该程序写得好不好。我们在前几天有说刷题过程中,「如何最大化一个题目的效益」也是刷题过程中重要的关键。比起盲目的刷题之外,如何从一个尽可能地持续迭代、持续优化并且思考沈淀,让你从一个题目掌握到更深更广的效益。因此提交一个正确解答之後,你要做的并不是马上就解下一题,而是思考与沈淀之下,然後尝试优化的策略。进入「一个题目」的解题过程时,可以分成「#动手之前先思考 → #初探直觉解 → #刻意优化 → #举一反三」几个阶段的优化过程。


嗨,大家好!我是维元,一名擅长网站开发与资料科学的双栖工程师,斜杠於程序社群【JSDC】核心成员及【资料科学家的工作日常】粉专经营。目前在 ALPHACamp 担任资料工程师,同时也在中华电信、工研院与多所学校等单位持续开课。拥有多次大型技术会议讲者与竞赛获奖经验,持续在不同的平台发表对 #资料科学、 #网页开发 或 #软件职涯 相关的分享,邀请你加入 订阅 接收最新资讯。


<<:  Day08 - 语音特徵撷取 - AFE

>>:  rsync进阶备份操作

onnx - 用 netron 查看 onnx 模型版本参考笔记

onnx - 用 netron 查看 onnx 模型版本参考笔记 参考资料 参考资料如下: netr...

#1 JavaScript Easy Go!

JavaScript 是一个容易上手、运用灵活、开发快速的语言。 这个系列文会教你从零基础到实作不同...

Unity自主学习(十四):认识Unity介面(5)

昨天我们了解了游戏执行区以及场景编辑区中"Main Camera"物件对其的影响...

[Day 14] Reverse 小入门

时间飞逝,已到第14天了 明天就一半ㄌ,好感动眼睛流汗 今天我们要干大事!!! 要来解 REVERS...