LeetCode不乱刷!掌握通关指南,省时高效不脱发!

白板面试几乎是科技面试的一项固定流程。而作为刷题领域的高频词之一,大家对“ LeetCode “可以说是耳熟能详。对于许多人来说,使用LeetCode的目的,不仅仅是通过技术面试,而是要通过Facebook、Amazon、Apple、Google等顶尖科技公司的技术面试。

“这次Google一定没问题!“我们怀揣着梦想,兴致勃勃的打开了网页。满腔热情在看到上千道题目时,顿时凉了一半……时间紧迫,任务艰巨。 那么,我们又如何高效的使用LeetCode呢?

LeetCode

不负盛名

网上对LeetCode的评论大多都是正面的,称LeetCode为计算机科学领域,最赫赫有名的题库毫不为过。初学者可以在这里得到提升,资深者也能在此受益匪浅。

LeetCode支持14种编程语言,包含上千道题目,分为简单、中等、困难三个级别。全刷完显然要耗费大量的时间和精力,那么我们以何种方式“ 打开 ”LeetCode最为高效?

高效刷题指南

LeetCode

想要拿到理想offer,只掌握基础知识显然不太行。见多识广,才能从容应对技术面试。我们刷LeetCode的目的不仅只是记住答案,刷LeedCode的成果也不仅只有题目数量,最重要的是学习问题的解答方式,这样才能举一反三,灵活应用在该类型的其他题目上。

“简单”的题目

这个级别的题目旨在帮助大家熟悉基本技巧。通常来说,它们有一些简单粗暴的解答方法,我们需要学习的,则是应用这些小技巧来改进自己略显粗糙的解题方案。

考察点:练习基本技巧

当我们随机点开一道数据结构或算法的简单题目,能在几分钟内列出最优解决方案并完成它们,那么我们就出师啦。

1. 参考“ 通过率 ”,虽然都是“简单”级别的题目,但是通过率较高的问题相对更容易解决。

2. 尝试在没有提示的情况下解决问题,哪怕是略显粗糙的答案,毕竟 Done is better than perfect

3.Run Code ”按钮非常诱人,但倘若我们总是习惯性点它,对提升能力没有多少帮助。我们的目标是“一次过”,毕竟这更实际地模拟了白板面试——我们只有一次机会。所以,尽量迫使自己思考全面,反复执行代码是不可取的。

4. 研究优秀解法中,那些可以优化答案的小技巧。没必要羞涩,不懂的地方积极提问就好。有时候票数最多的答案不一定是最适合你的,一些很棒的答案可能因为篇幅较长,回答时间等问题被排在稍微靠后点的位置。

“中等”的题目

这个级别的题目旨在锻炼大家看穿问题的能力,它们通常是一些简单题目的“伪装”或“变化”。使用简单粗暴的解决方法可能会导致答题超时。我们需要学习的是分辨问题,并找出正确的解题方式。

考察点:识别问题及解题方式

随机点开一个数据结构、算法的中等题目,如果我们能找出它们掩盖的问题,并可以在半小时内写出接近最优的答案,那么我们就可以适当挑战困难级别的题目了。

1. 仔细阅读问题中的每个单词,寻找其中的提示,不要被“ 似曾相识 ”的感觉欺骗。

  1. 掌握了答题的大致方向就成功了一半。我们需要尝试着写出至少一个 次优解 ,答案不是完美的没有关系,毕竟人们花了很多精力来优化他们各自的答案。

3. 当成功写出次优解时,我们就可以挑战最优秀的解决方案了。看看自己的答案有哪些可以改进的地方,研究一下同一道题的其他解法。

4. 最后,试着吃透其中的思维过程,不看提示,根据自己的理解做出最优答案。

“困难”的题目

这个难度的基本是拔高题,它们的目的是让小伙伴们精益求精,挑战自己。通常情况下,45分钟的时间几乎不足以让我们写出一个完整的答案。我们需要学习的,是确定解题的正确方向。

考察点:“毕业审查”

困难级别的题目通常有一些限制,它们不适用通用的典型技巧。对于这些题目,答题时限显得不那么重要了。我们需要学习的是,如何建立起“典型技巧”通往“限制条件”的桥梁。

1. 困难级别的问题可以暂不考虑最优答案,我们从成功解决问题开始,也可以 适当 取消答题的时间、空间限制

2. 思考最优解需要满足的限制条件。如果自己的答案很难改进,那么是时候参考最佳答案了。理解思维过程是其中最重要的部分,尝试着理解如何处理题目中的极端情况。

3. 举一反三,做不到最佳,“第二好”也很棒,尝试着用次优解来应对其他困难级题目。

针对不同级别的题目,我们有不同的侧重点。除此之外,还有一些 通用的小技巧

关于标签分类

如果觉得自己在某个算法上比较薄弱,可以通过“Tag”来过滤筛选问题集。但是,在平时刷题时,不太推荐这样按照标签分类练习。因为我们希望锻炼的能力还有 识别问题的算法类型 。例如,当我们点击标签”二分查找“后,就知道过滤出的问题的解法,很可能为二分查找。

于赞成和反对

打开一个问题,我们可以看到有多少人赞成或反对它。适当避开那些赞成/反对比例 低于2:1 的问题,尽可能选择比例 高于4:1 的高质量问题。

关于刷题时间

七天每天一小时 “的效率明显高于”一天七小时“。坚持每天刷题,使自己一直处于”编程状态“。最后,做好相应的规划和总结。

1 Like

我们的目标是“一次过”,毕竟这更实际地模拟了白板面试——我们只有一次机会。所以,尽量迫使自己思考全面,反复执行代码是不可取的。

thanks