当前位置: 华文星空 > 知识

刷完 LeetCode 是什么水平?能拿到什么水平的 offer?

2020-05-16知识

力扣君看到这个问题的时候,已经时隔 N 年,力扣(LeetCode)上的题目已经有 1000+ 了。

一目了然的题目分类

力扣的题覆盖面极大,目前已有 1000+ 公开题目资源,涉及了许多算法与数据结构,有贪心,搜索,动态规划,链表,二叉树,哈希表等。这些题目所涉及的知识点都有很大的实际应用价值,所以,力扣不仅对题目难度进行了划分,而且我们还对题目的知识点做了分类,为每一道题都打上了标签,您可以在所有题目中筛选出您感兴趣的主题进行训练,我们相信您在经过一段时间训练后,一定会变得更强,并很有可能拿到心仪的 Offer。

据我们了解到的情况,Easy 题和 Medium 题在面试中比较常见,通常会以手写代码之类的形式出现,您需要对问题进行分析并给出解答,并于面试官进行交流沟通,有时还会被要求分析时间复杂度与空间复杂度,面试官会通过您对题目的分析解答,了解您对常用算法的熟悉程度和您的程序实现功底。

而在一些对算法和程序实现功底要求较高的岗位,Hard 题也是很受到面试官的青睐,如果您在面试中成功 Bug-Free 出一道 Hard 题,我们相信您一定会给面试官留下很深刻的印象,并极大增加拿到 Offer 的概率,据相关人士统计,如果您在面试中成功解出一道 Hard 题,大概率就能拿到 Offer 了。

所以, 力扣中 Easy 和 Medium 相当于面试中的常规题,而 Hard 则相当于面试中较难的题,解出一道 Hard 题,那你已经向你的 Dream Offer 迈进了一大步了。力扣的题那么多,面试准备时间往往没那么多,怎么办呢?谁都想花最少的时间能事半功倍吧!力扣的每道题都会标识出它在面试中的出现频率,大家完全可以有的放失的进行刷题,既省时间效率也高!

多种语言支持

力扣目前支持 16+ 种编程语言:C++, Java, Python, Rust, Kotlin 等语言,不管您的擅长语言是哪一种,你都将在力扣获得愉快的做题体验,因为你能更好地注重于问题所用算法与数据结构本身,而不是纠结于您不擅长语言的细节上。

题目这么多?应该如何刷?

刷题前准备

首先,刷题前你需要具备一些算法和数据结构的基础,这些基础包括:

1. 常考的数据结构: 数组、字符串、链表、树(如二叉树)等

2. 常考的算法: 分治、贪心、穷举、动态规划、回溯等

时间充裕的同学可以按照下图进行系统性地学习:

同时可以搭配相关书籍进行学习:

1.【 算法第 4 版 】- Robert Sedgewick

适合初学者入门

2.【 数据结构和算法分析- C 语言描述 】- Mark Allen Weiss

需要有一定 C 语言基础

3.【 编程珠玑 】- Jon Bentley

4.【 算法导论 】- Cormen,T.H.

有一定算法基础以后可以去学习【算法导论】。

先把这些基础的算法和数据结构知识梳理一遍,在理解的基础上再去力扣上刷题,可以让刷题事半功倍。

开始刷题

我相信很多刚开始刷力扣的小伙伴打开网站后,面对这上千道难易度层次不齐的题目就懵了,完全不知从何下手。 我的建议是可以先从一些 简单的题目 开始,在题库页面我们可以使用筛选工具将难度选择为「 简单 」。同时还可以添加多个种类的筛选条件,比如我想要刷数组的题目,我们可以再选择一个「 数组 」的话题标签,那么我们就可以从所有的数组简单题开始练习了。这些操作在学习工具页面底部的「 题目列表 」中你也是可以找到的。

或者你可以从 题解多 的题目开始练习,这样即使被某个问题卡住了,也能通过其他用户的优质题解打开解题思路。

力扣题解

力扣题解区高手云集,题解没有最好只有更好,两数之和这道题,你有多少种解法呢?

解题技巧

学习算法要渐次进行,先掌握一类算法,钻研透了再去掌握另一类。俗话说「贪多嚼不烂」。碰到不会的题目可以多去题解区看看其他人的解题思路,将每一道题目吃透。

可以参考力扣君之前发布的一个回答

解题示例

对待每一道题目都应该追求完美,看看同一道题自己能想出多少种解法,其他题目是否可以用同样的解题思路。

比如力扣上的第 3 题「 无重复字符的最长子串

题目描述:

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:

示例 2:

示例 3:

这道题目基本解题思路是 滑动窗口 ,我们是否还可以用其他的解法?做完这道题目以后,再去练习「滑动窗口」相关题目巩固一下:

30. 串联所有单词的子串

76. 最小覆盖子串

159. 至多包含两个不同字符的最长子串

209. 长度最小的子数组

239. 滑动窗口最大值

567. 字符串的排列

632. 最小区间

727. 最小窗口子序列


面试突击

刷题时间不充裕的同学,可以从 【 高频算法面试汇总 】的探索卡片开始刷起,或者从题库页右侧的「热门推荐」开始刷起。

真题演练

题目刷到一定数量以后,如果想测试一下自己在真实面试中的水平可以来一场模拟面试。模拟面试还是相对比较有挑战的,尤其是在有限的时间内能快速 bug free AC 这些题目。

模拟完成后,你也能看到自己详细的面试报告,了解自己的欠缺所在。个人觉得在每次模拟面试时,都要争取全部通过才是最稳妥的,如果没有在规定时间内完成面试题目,面试结束后也一定要花时间将没有做出来的题弄懂,然后再次模拟该企业面试,这样才能在真正面试时有备无患。

此外,面试页面有一个搜索框可以用来搜索各大公司的面试真题。如果你面试目标明确,可以直接搜索想要去的公司进行有针对性的反复练习,争取一举拿下 offer。

说了那么多,还是需要各位程序员们的执行力,在学习的过程中不能只是收藏学习资源却没有实际行动,不要给自己明天再开始学习的念想。

从现在开始准备起来吧!祝愿每一位小伙伴都能在力扣上学有所得,找到自己心仪的工作。

欢迎各位知友关注力扣官方微信公众号:「 LeetCode力扣 」,更多关于程序员面试、技术干货的内容等你来啃!