95% 以上的大厂在面试时都会用算法题来提高自己的门槛,从而用更为严苛的手段来挑选候选人。其中算法和数据结构一直是技术面试的重点和难点,也是拿到 Offer 的必备敲门砖。
据力扣君了解,现在就连某些外包公司也会时不时的考你一些算法题。所以如果你说算法题就只是进大厂的人需要去学习,我们这种中小厂或者外包公司的程序员根本用不到的天真想法可以就此打住了。
一些头部互联网公司对面试者的算法水平要求更高,不止要求面试者能写出算法,还要求时间复杂度最小,找出最优方式。
那么如何高效刷题拿到名企 Offer?想要保证好的刷题效果,一份完备的刷题计划必不可少。本篇文章根据力扣用户的刷题经验分享整理,带你探索正确的刷题方式。(小白适用)
正确的打开方式
刷题前你必须要掌握一门编程语言,另外制定一份适合自己的学习计划,首先开始学习前,需要了解下算法和数据结构的关系,如果把算法比作建筑工程的图纸,数据结构就像是建造大楼的工具。数据结构设计的初衷就是方便程序员使用,虽然看似种类较多,但实际上每一种都不难,可以结合算法一起学习。
详情见下图:
学习板块
对于零基础的同学来说,不建议一开始就从题库页开始按顺序刷题。在力扣的 学习板块 有十分丰富的算法和数据结构的主题学习计划,从 学习板块 开始学习能帮助你快速入门。其中的每个区域都覆盖了详细的知识点介绍,概念讲解,结构特点,代码实现,例题,企业真题及答题套路等。
按照正确的顺序来刷学习板块,由浅入深,逐层打好算法根基。
数据结构
推荐课程:数组和字符串、链表、队列&栈、哈希表、二叉树 & 二叉搜索树
在开始入门前,建议大家从数据结构开始刷。
初级算法
推荐课程:递归与分治、数组类算法、查找类算法
掌握了一定的数据结构以后,就可以开始学习一些基础算法,体会算法和数据结构的关系。
巩固训练
推荐课程:初级算法、中级算法、高级算法
这些课程书籍可以当作是检验前面学习成果的小测验。
当有了一定的算法和数据结构基础以后,这时你就通过 求职 板块检验下自己的学习成果。
这个板块是力扣根据往年 Top 30 互联网热门企业的面试情况精心挑选出高频面试题组成的。热门企业包含大家所熟知的 BAT、华为、字节、美团、微软等海内外名企以及近几年备受关注的企业。可以帮助同学们在有限的时间内高效地并有针对性地学习提升自己技术能力。
题库板块
如果你已经具备一定的算法基础,根据题库板块的标签分类进行专项刷题也是一个非常不错的选择。
此外,题库板块的题解中,每天都会置顶一道打卡题(每日一题)题目精选自力扣高频面试题,完成每日打卡任务还可以获得力扣积分及相应奖励。
面试备战
「剑指 Offer」题库
在很多互联网名企的面试中经常出现「剑指 Offer」中的原题,在力扣题库页就可以看到「剑指 Offer」专题题库,如果你已经在准备面试冲刺的阶段,这时候不妨多刷两遍「剑指 Offer」题库。
刷题技巧
当我们开始刷一类算法题前,如果对此算法的概念还不太熟悉,花费 5 分钟左右的时间了解其概念是很有必要。在力扣题库页的 标签分类 中,点击对应的标签即可查看算法概念。
在足够多的准备工作后,我们就可以开始找一道简单~中等的题目试试水了。
这里需要注意的是:不建议初学者直接练习困难题目。因为困难题目往往不够典型,困难题总是糅合了多种算法,难点在于对多种算法的综合应用,不适合在学习阶段用来专攻某一类算法。
下面举一个具体的例子,比如我们计划本周刷动态规划的题目。先点击题库页「动态规划」标签,查看其概念:
了解完概念,我们脑中对此算法有了一个粗略的认识,接着可以做一道相应的(简单)经典题目后会产生一些自己的理解,例如有的同学总结出一个定论:
如果一个问题满足以下 2 点,那么它就能用动态规划来解决。
- 问题的答案依赖于问题的规模,也就是问题的所有答案构成了一个数列。
比如说:1 个人有 2 条腿,2 个人有 4 条腿,...,n 个人有多少条腿?答案是 2n 条腿。这里的 2n 是问题的答案,n 则是问题的规模,显然问题的答案是依赖于问题的规模的。答案是因变量,问题规模是自变量。因此,问题在所有规模下的答案可以构成一个数列 (f(1),f(2),...,f(n)),比如刚刚 “数腿” 的例子就构成了间隔为 2 的等差数列 (0,2,4,...,2n)。
- 大规模问题的答案可以由小规模问题的答案递推得到,也就是 f(n) 的值可以由 {f(i) | i < n} 中的个别求得。
还是刚刚“数腿”的例子,显然 f(n) 可以基于 f(n-1) 求得:f(n) = f(n−1) + 2。
如果实在无法理解,可以在做题时参考「力扣官方题解」来找找思路。
但许多人只停留在看,就是不动手。再次提醒,不要觉得看懂了就是会了,一定要自己敲一遍,有过刷题经验的人都知道,看别人解题和自己亲自上手是完全不一样的感觉。经常是脑子和眼睛在说:我会了。而手在说:不,你不会!
总而言之,算法学习技巧可总结为四个步骤:
- 一看:先查看基本概念,知道这类算法是什么。
- 二抄:照着别人的解题思路,将代码完整敲一遍,理解其思路。学习算法切忌自己造轮子,绝大多数问题都早已经有了完善的解决方案。
- 三改:拷贝自己以前敲的模板代码,加以修改,反复巩固。
- 四写:看答案与改答案 AC 的题不能算是真的会了,必须自己能手打出完整的代码才是真正会了。
时间计划表
梳理完算法学习的先后顺序和刷题技巧,一份可执行的时间计划是非常重要的,大家可以根据自己的学习进度安排,例如:
先确定学习方式
有的同学基础还比较薄弱,就需要花一定的时间梳理知识点,可以通过 学习板块 看书看课程学习,在刷题前至少保证一周左右的时间充分梳理知识点,而基础比较扎实的同学可以适当缩短梳理知识点的时间,或者直接从题目开始刷。
计划刷题数量
一般来说,刷 150 - 300 题就能比较充分地应对技术面试了。同学们可以根据时间按照实际情况调整。在这个基础上可以预估每天要花多少时间刷题,刷多少题。
预留面试前的准备时间
在开始面试前的 2 周左右,你就需要进行大量实战演练和冲刺刷题了,在这个阶段反复练习 LeetCode 精选 TOP 面试题,保持刷题的手感。
以上就是给大家梳理的刷题经验汇总,想要进入互联网名企,有效地执行计划必不可少,从现在开始你地刷题计划吧!
评论留言少 BUG !点赞转发不脱发!
BY /
本文作者:力扣
声明:本文归“力扣”版权所有,如需转载请联系。