vlambda博客
学习文章列表

不会高效刷LeetCode,还想进大厂?做梦吧!

算法工程师岗从18年是否值得进入,19年供大于求,20年一片红海诸神黄昏,到21年春招算法岗神仙打架的时代。

不会高效刷LeetCode,还想进大厂?做梦吧!

还是

不会高效刷LeetCode,还想进大厂?做梦吧!


随着算法岗应聘人数剧增,大厂的要求也随之提高。2021年腾讯校园招聘网站上技术研究岗位投递录用比高达28:1。甚至有些大厂面试要求双985教育背景,大厂实习经验,参加相关领域竞赛获得top排名,并且发表相关领域顶会论文,异步君想说这是神仙条件吧。

在这千军万马过独木桥的形势下,0比赛0顶会0背景的同学能拿到大厂offer的不在少数。缺乏加分项的同学进大厂的核心竞争力是什么?

答案是扎实的算法基础和过硬的代码能力,这才是能进入大厂的关键所在。LeetCode题库相信每一位算法工程师都不陌生。LeetCode虐我千百遍,待她依然如初恋。想成为算法工程师的程序猿们,想要成为优秀算法工程师的大佬们,如何在大厂春招面试中脱颖而出,高效刷LeetCode题库成为关键。


1

高效练习leetCode题库



首先,刷题指南适用于希望通过LeetCode掌握必要技能以应对技术面试的程序猿。研究LeetCode题目不仅仅是记住答案,还必须认真学习解决问题的方案,并将其应用于类似的问题。在LeetCode中解决问题的数量仅仅是你对算法熟悉程度的指标之一,学习解决问题的思维模式比做题的数量重要的多。


不局限于计算机科学基础知识















假定你至少听说过《Cracking the Coding Interview》或类似书籍中的双指针和位操作等基本技巧。你不必掌握它们,知道它们是什么可以帮助你更好地研究LeetCode的解决方案。如果你只学习过计算机科学基础知识,则可能希望在开始练习LeetCode题目之前先快速阅读一下这些书。


训练难度要循序渐进


算法训练是一个系统学习的过程,需要循序渐进。如果先做难题容易产生挫败感,带来反效果。刷LeetCode题目应该从简单题过度到中等题最终是困难题。目前国内大厂的算法考察,基本不会超过LeetCode题库的中等难度题。如果你能够在20分钟内做出这种难度的题目,国内大厂的算法面试基本可以畅通无阻。

按算法分类来选题


选择题目时需要针对算法类别进行划分。基本的数据结构算法题,比如说双指针,排序,贪心思想,二分查找,分治等。我们需要按算法的分类来刷题,比如周一刷双指针,周二刷排序,周三刷贪心思想等。这样做题可以极大的提高刷题速度,而且能带来更好的效果。
  • 通过持续地刷同个类型的题目,可以不断地巩固和加深理解。
  • 全面接触一个数据结构算法的各个变型,总结变型题之间的共同性和差异性。这样对算法的理解会更加全面和深刻,学习的效率会更高。
LeetCode题库中算法思想与数据结构相关题目刷题顺序可以按照如下推荐:

不会高效刷LeetCode,还想进大厂?做梦吧!不会高效刷LeetCode,还想进大厂?做梦吧!


LeetCode做题步骤



  • 阅读题目:有些题目直接说明需求,并提示需要使用的算法和数据结构;有些题目没有明确说明需求,没有提示用什么算法和数据结构解决问题。所以需要我们仔细地阅读题目,认真思考题目需求。
  • 逻辑推理:在推导分析题目解决方案时,应注重题目逻辑上是否可以实现问题需求,不需要思考代码如何实现,这样可以极大的提高解题效率。不会因为同时需要思考解决方案和代码实现,而导致无处安放的手不知所措。
  • 代码实现:将逻辑上可行的最优解决方案转换成代码是很重要的一个能力。有些题目将算法转换成代码很容易,但有些题目将算法转换成代码难度很大。编写代码时怎么定义变量保存状态,是使用递归或是使用循环加辅助数据结构等。这都是代码实现过程中需要思考的,所以编写代码的能力是需要我们刻意地练习。

练习LeetCode基本技巧



LeetCode中简单的问题旨在帮助你熟悉基本技巧。针对简单题目,通常是可以使用简单暴力的解决方案,但你需要学习的是运用技巧来改善你的暴力解决方案。
如果你随机打开每个算法或数据结构的一些简单问题,就可以找到最佳解决方案并在几分钟内完成它们,则可以进行中等题训练。中级问题旨在训练你解决问题的技能。它们通常是简单问题的伪装或变型。暴力解决方案有时可能会导致超过时间限制(TLE)。你需要学习的是确定问题所要求的最优解决方案。中等题解题技巧如下:
  • 通过率下降的方式对问题进行排序,先做接受率较高相对较容易的问题。
  • 尝试在没有提示的情况下解决问题,可以先使用暴力解决方案。
  • 研究最佳解决方案是如何应用技巧来提高算法性能的,一般是看运算速度在70%-90%之间的解决方案,运算速度最快的一些方案一般会采用非常规操作,不适合初学者学习。
如果你随机打开每个算法或数据结构的一些中等问题,能够确定它们真正隐藏的是什么问题,并且可以在半小时内实现接近最佳的解决方案,那么你就可以直接挑战难题了。通常,对于难题来说45分钟仅够你提出可行的解决方案。你需要学习的是确定最优的解决方案。难题解题技巧如下:
  • 仔细阅读问题中陈述的每个字,并寻找有关解决方案的提示。例如,任务的方式数量表示DP,带有字典的字符串转换表示BFS/DFS/Trie,寻找重复或唯一元素表示哈希或位操作,解析表示使用堆栈等。
  • 当你对解题方向有一个大概了解时,你就成功了一半。尝试至少实现次优解决方案,不用担心方案不好。很多人都是花了大量精力来完善他们的解决方案以达到最优的效果。
  • 一旦有了次优的解决方案,你可以直接看社区中最好的解决方案,以学习可以改进的内容以及解决相同问题的其他方案(不局限于一门语言,一个框架,其他语言解题方案可以开阔我们的思路)。
  • 在没有任何提示的情况下,尝试独立思考解题过程,并根据自己的理解完成最佳解决方案。

算法能力的提升是一个长期的过程。持续地学习和刷题是一个枯燥的过程,在遇到难题无法解决的时候很容易产生挫败感。如果总是无法解决某个难度或某个类别时,需要考虑降低难度或全面的复习特定算法和数据结构。异步君希望每一个想要成为算法工程师的程序猿,保持长久的动力不言放弃,胜利的彼岸就在前面。
如果你觉得以上高效刷LeetCode题库指南还是很难,无法短时间让你在春招面试中脱颖而出。异步君想告诉你,没关系。异步社有幸请到陈小玉教授,就 “金三银四” 算法春招面试公开课开展一次限时免费直播,分享算法面试经验以及高效算法刷题技巧!


2

“金三银四”


算法春招面试公开课直播
大咖直播,原价199限时免费
直播时间3月23日 20:00


不会高效刷LeetCode,还想进大厂?做梦吧!


【详细课程介绍】


不会高效刷LeetCode,还想进大厂?做梦吧!

扫码进群加入社区

免费领取福利


不会高效刷LeetCode,还想进大厂?做梦吧!

算法春招面试公开课

原价199元,扫码入群限时免费学!

3月23日晚8点直播准时开讲!速来!




-END-

异步社区

人民邮电出版社旗下IT专业图书旗舰社区
技术|交流|图书|社群
回复“小助手”,进入读者交流群

👇点击阅读原文,免费报名