本文原本是打算加到我的新书《算法通关之路》的附录部分。不过由于力扣官方不过审,因此只好作罢。将这部分内容发到这里给大家参考。
《算法通关之路》介绍以及购买可访问:https://leetcode-solution.cn/...
力扣(LeetCode )网站使用方法
力扣(LeetCode )官网收录了许多互联网公司的算法题目,一度被称为刷题神器。这里我们就来介绍下如何使用 力扣(LeetCode )网站。
由于力扣(LeetCode)本身也处于不断迭代之后,因此本文部分内容有可能在将来会变得不再适用。
以力扣国际站为例,其官网给出了四个分类:Algorithms、Database、Shell 和 Concurrency,分别表示算法题、数据库题、Shell 和并发题,第一个就是我们所需要刷的算法题。
并发是 2019 年才添加的新的模块。
点开 Algorithms 后,我们可以看到一个题目的列表,每个题目都有一个唯一的序号。力扣(LeetCode )目前有 1000 多道题目,并且一直持续更新,其中有一些是带锁的,需要会员才能查看。
后面的接受率(Acceptance)表示提交的正确率,Difficulty 表示难易程度。难易程度有三个级别,分别是 Easy、Medium 和 Hard。
- Easy 通常不需要太多思考和也不会有复杂的细节,比较特别适合新手或者拿来热身。
- Medium 级别就会有些难度,一般都会涉及到经典的算法,需要一定的思考。
- Hard 级别是最难的,有些时候是算法本身的难度,有些时候特别需要你考虑到各种细节。
这里分享一个小技巧给大家。衡量一道题目难不难除了看难度之外,还可以看下接受率,接受率越低代表题目越难,这个指标有时候比难度更靠谱。
你可以对题目进行筛选和排序。
如果我们只想要找某一类型的题或者某个公司的题库,可以通过 Tags 或 Company 来筛选。
另外我们在做某一题时,觉得还想再做一个类似的,可以点击题目描述下方 Show Similar Problems 或 Tags 来找到相似的问题。
每个题目都有各自的 Discuss 区域。在这里,许多人都把自己的思路和代码放到了上面,你可以发贴提问,也可以回复别人,里面大神很多,题解质量都很高,如果实在没有思路或者想看下有没有更好的思路可以来逛一下。通常来说我建议你优先看留言最多或者投票最多的。
点开某一个题目,会跳转到具体题目详情页面,你可以在右侧的代码区切换选择自己需要的编程语言。
代码编写完了之后,不要急着提交,先测试运行一下(Run Code 按钮)。你可以多写几个测试用力跑一下,没有问题再提交,要知道比赛的时候错误提交要加时间的。
提交通过之后,可以点开 More Details 查看详细运行结果信息。
每道题旁边的 My Submissions 可以找到自己的对于该题的提交情况,这里可以看到自己过去所有的提交,点 Accepted 或 Wrong Answer 就可以查看自己过去提交的代码情况,包括代码是什么,运行时间以及全部用户提交的时间分布图等。
以上就是 力扣(LeetCode )的主要功能,希望通过这一节内容能让你对 力扣(LeetCode )网站有所了解,从而更快地进行刷题。
刷题工具
所谓“工欲善其事必先利其器”,接下来给大家带来一些提高刷题效率的小工具。
力扣代码调试器
力扣代码调试器是一款简单易用的代码调试工具,它能够随时检查代码的运行情况以及选择性地运行代码,以便您排错、调试。
力扣代码调试器支持以下特色功能:
- 支持无限制添加断点,单步运行调试
- 一键监听表达式,动态追踪变量,及时定位错误
「力扣代码调试器」处于内测阶段,具体功能可能会不定期调整,请以最终 release 版本为准。代码调试器目前支持 C++、Java、Python、Python3、C 等 5 种语言,持续更新中。
值得注意的是,这是一个会员才可以使用的功能。
力扣(LeetCode )For VSCODE
这个是一个可以让你在 VSCODE 编辑器中选题,写代码,测试,提交的力扣题目的插件。主要特点是可以利用自己编辑器的一切优势,包括但不限于编辑器主题,代码智能提示, 代码片段,调试工具。也就是说,上面提到的力扣代码调试器的大多数功能,你都可以通过 VSCODE 以及其扩展插件实现。
缺点是部分功能使用体验不好, 比如错误提示不明显,经常误提交等,不过最让我感到不舒服的是自定义测试用例,明显没有力扣官方做的好。
大家可以在 vscode 插件商店搜索 leetcode 进行下载安装。
LeetCode-Cheat
题解模板
为了方便大家写出格式良好的题解,插件现在内置题解模板功能,目前模板只有一套,这套模板是我经常使用的题解模板。
安装好我们的插件(版本需要 v0.8.0 及以上)后,打开力扣中文版,会发现如下的按钮。
点击之后会自动引导你到一个新的页面,
该页面的题解语言,题目地址和题目名称信息会自动填充。
你可以快速完成时间复杂度,空间复杂度的插入,复杂度已经按照性能好坏的顺序给大家排好了,点击即可插入。
此外我们提供了若干常用的公式供你快速复制使用。除了公式,其他内容都可以在右侧的预览区域查看。
写完只会可以点击复制,将其复制到其他地方以便持久化存储。由于我们没有做持久化存储,因此页面刷新内容就会消失哦。
最后祝大家写出漂亮的题解!
数据结构可视化
你可以使用 canvas 自由绘制各种数据结构,不管是写题解还是帮助理解题目都很有用。
我们提供了很多内置的模板供你快速上手。
如果你对内置的模板不满意,也可以将自己的模板保存以便下次使用。
学习路线
算法怎么学?推荐按专题来。具体到某一个专题怎么学?这里提供了一个学习路线帮助你。本功能旨在将一个专题中的题目进行分类。专题本质就是对题目的一种划分,学习路线基于专题又进行了一次划分。
复杂度分析
你的代码能会超时么?复杂度分析帮助你。
一键复制所有内置测试用例
省去了一个个手动复制的过程,效率翻倍!
代码模板
提供了大量的经过反复验证的模板。模板的作用是在你理解了问题的基础上,快速书写,并减少出错概率,即使出错,也容易 debug。
禅定模式
点击之后会变成这样:
底部控制台会消失,当你鼠标重新移过来或者退出禅定模式就出现了。
查看题解
当你在任意非题目详情页或者我还没有收录的题目详情页的时候, 我都会列出当前我总结的所有题解。
其实我给比较经典的题目做了题解,因此这个题目数目不是很多,目前是 173 道题。另外有时候我直接写了专题,没有单独给每道题写题解,因此数量上要比 173 多很多。
当你进到一个我写了题解的题目详情页的时候, 你就可以正式使用我的插件了。 它可以:
- 给出这道题目的前置知识。换句话说就是我需要先掌握什么才能做出这道题。
- 这个题目的关键点。
- 哪些公司出了这道题。
- 我实在不会了,给我看看题解吧。好,满足你。
- 题解我就不看了,直接 show me code 吧。好,满足你。
- 根据公司,查找题目。面试突击必备
后期规划:
- 更多公司信息。 持续完善题目的公司信息,这个过程需要大家的帮助,大家可以把自己面试遇到的问题发给我(附带公司和岗位信息),我可以免费提供咨询服务。
- 岗位信息。
- 可视化调试。 可视化展示你的代码允许情况。
- 自动制定复习计划。
- A I 智能提示。即新的提示也可以根据题目信息推测可能的解法。
- 等等
需要的话,可以去我的公众号《力扣加加》回复插件获取。
LeetBoard
这是一个帮助你写写画画的一个浏览器扩展工具。很多时候,我们需要在纸上演算一下,验证自己的思路,这个时候就可以用这个工具。
这个工具提供了多种常见数据结构的可视化,方便大家快速书写。目前支持的数据格式有:数组,链表,二叉树。
debug-visualizer
这是一个支持可视化调试的 VSCODE 插件。相比于平时我们 debug ,它能帮助我们可视化内存中的数据结构。比如数组,树,图等都可以胜任。由于其不是为力扣量身制作的,实际上它还有很多其他的用处, 比如可视化图表,比如折线图。其功能非常强大, 你甚至可以基于它定制一套自己专属的数据结构。
大家可以在 vscode 插件商店搜索 leetcode 进行下载安装。
总结
这五种工具,除了 debug-visualizer,其他都是为力扣量身定做的。
各个工具功能侧重各不相同, 大家也可以结合起来使用。总的来说:
- 如果你想在编辑器中写力扣,那么 力扣(LeetCode )编辑器插件是一个不错的选择。配合 debug-visualizer 可以实现丝滑般柔顺的感觉。
- 如果你想在力扣解题过程中写写画画,屡屡思路,建议使用 LeetBoard。
- 如果你想看看题目的公司信息, 题解等,建议使用我写的 LeetCode-Cheat。
- 如果你不想使用本地编辑器, 并按照一堆插件,只想用浏览器去完成,那么力扣代码调试器绝对是不二选择。
另外还有一些网站可以可视化算法的执行过程,这对算法初学者来说尤其重要,algorithm-visualizer 就是这样的一个网站,它收录了几乎全部常见的算法, 相信可以满足你。