leetcode可以说是工程师的试炼场,收集了许多公司的面试考题,可说是题海无涯,那麽就开始刷题之旅吧! leetcode可以直接用github帐号登入,不用另外申请帐号,非常方便。
选择选单列的Problems就可以看到题目列表了!
leetcode很贴心依照题型做分类,这边选择expand可以看到更多分类。
如果想练习特定类型的题目,可以直接点选该分类,就会看到所有相关的题目罗!像是双指针Two Pointers
不过如果你没有想练的特定类型的题目也没关系,下面的题目列表可以做初步的筛选,一开始先筛选出easy的题目来练习吧! 不过如果你天生神力,直接挑战medium难度以上的题目也是没问题的!Acceptance是题目的通过率,越低代表通过的人越少。
右边会有个小小面板纪录你的刷题情形,提醒你"题海无涯"。
让我们直接选一题来开始解题吧!,画面的左边是题目叙述,看完叙述如果有看没有懂,可以搭配example来理解题目要表达的意思。
右边则是解题区域,可以选择自己熟悉的程序语言来解题
作答完之後,可以按右下角的Run Code来看第一次test case看有没有通过,如果有通过,觉得自己写的差不多了,就可以按下Submit了。
按下Run code後 执行一次test case
这时候题目就会开始跑很多test case,以下面那题的例子来说,有1032个test case,如果有些edge case没考虑到的话,你的程序码可能就爆掉了,不会通过测试,接着就会看到下面这样的讯息,输入-123 预期要输出-321,结果却是输出NaN。
边界条件,测试程序在一些很极端的情况或条件下执行,是否还能正常运作。
假如我们成功通过了所有的test case,恭喜你! 就会看到Success的画面,告诉你程序的执行时间和执行效率跟其它提交者相比快了多少,以及记忆体的用量状况,下面的next challenges则是推荐相关或是相似的题目给你。
下方会列出你的历史提交纪录,这边稍微解释一下status个别代表的意思
Accepted
- 解题方法通过了所有的test caseWrong Answer
- 解题方法并没有通过全部的test caseOutput Limit Exceeded
: 超过输出长度,提交前记得要把console.log注解或是拔掉,不然就会看到这个错误讯息了Runtime Error
: 执行时间错误,题目希望解题的时间复杂度为O(n)但你的解法却是O(n²),或是不小心写了无穷回圈上面表格里的status都可以点击,就会看到每个提交答案执行时间的分布,看你落在哪个区间,有PR值的既视感。
点击柱状图的话,会跳出一个弹窗,显示那个时间区间提交的程序码内容,这时候就可以参考一下别人的写法为甚麽执行效率比较好。
不过有些题目真的是想破头都不知道怎麽解阿! 不是付费会员又不能看solution,该如何是好呢?之前都会Google leetcode xxx answer看别人的解法,其实根本不用这麽麻烦,可以去点击左上角页签的discuss,里面有很多人分享自己的解法。
在discuss里面可以在右边的标签区选择程序语言或是解题技巧的分类,假设我们想看javaSript的解题方法,就点选javaScript的标签。
就可以看到用javaScript作答的解题内容了,可以趁这个机会看一下别人的解题思路!
以上就是leetcdoe的基本介绍,其实刷leetcdoe的过程很有趣,写出来的时候很有成就感,写不出来的时候很苦恼,但必须说这是需要刻意练习的,在ptt上看到大神分享刷题进Google的故事,特别设计了一套刷题的训练如下
看完只能说奉上我的膝盖,这真的是需要毅力跟恒心才能办到,不过上述流程对於平凡人实在是太硬了,还是先依照自己的节奏来练习,可以培养每周刷几题的习惯,维持解题的手感,祝大家刷题愉快!
<<: Day21-又给人贴标签 Labels and Selectors
第30天了,来聊聊 vm/虚拟机 ... 如果只是想练习Linux的CLI,一定要在GCP上开ins...
今天要来练习while回圈的部分 那这边就直接开始说明罗~ 程序码范例: while(条件判断){ ...
闭包(closure)大概是我在函式这个单元过後,卡的稍微久一点的一个关卡,主要是弄不清楚闭包到底跟...
本篇重点 Quote-Binding Mode介绍 透过Quote-Binding Mode,将订阅...
目录 09-01-2021 Bonjour! 接下来的 30 天里,每天一点小知识将写下我脑中盘之错...