算法题就好像科举考试时代背的八股文,是知识改变命运的代表作。你不刷,不管是校招还是社招,就很过算法题这一关。
我整理的这份 LeetCode 刷题笔记足足 300 道,对算法薄弱和需要提高算法的同学很有帮助。
随便打开一道题解感受下,作者真的做到了图文并茂,不只是干巴巴的解题代码。这些手绘图让我感受到了作者的良苦用心,并且很多题都给出了多种解题思路,让我们能从不同的角度去思考,去得出最优解,而最优解,在面试的时候也是加分项。
作者从大一就知道了 LeetCode,但刷题总是三天打鱼两天晒网,隔断时间再去看之前刷过的题总是会想不起来,于是就萌发了刷一道题总结一题的想法。另外一方面,LeetCode 上的一些题解讲解得很少,有些只是简单的丢一些代码,对菜鸟很不友好,于是作者就想借这个机会把自己的各种解题方法都梳理清楚,然后详细地总结出来,也能方便其他小伙伴更好的理解,可谓一举多得。
作者在大一的时候就参加过 ACM 集训,但当时基础太差了,栈和队列都不清楚,所以 ACM 之路也就搁浅了。再准备刷题的时候已经是大四毕业的时候了。
作者在刷前几道题的时候也很慢,很多都没有思路,只能靠别人的解题思路才勉强过关。尤其是第 5 题求最长回文序列,用了好多天才把所有解法都总结了出来。
等到作者刷完 100 道题之后,发现真的是爱上了刷题。基本上后面的每道题都可以想出一种思路,甚至就是最优解,还会萌生一些别人没想到过的解法——哈哈,一种打游戏超神的感觉~
所以呢,我劝大家,不要怕自己基础不好,不要担心自己想不到解题思路,一开始就是借钱嘛,不不不,借鉴嘛,借的多了,自然就不用还了,成自己的了。重要的是开始和坚持。
Q:刷题需要基础吗?
A: 对于前 90 道题,只需要了解一门编程语言,知道变量、方法如何定义,if 语句,循环语句,递归。了解基本的数据结构,数组、链表、栈、队列、哈希表就可以了。
Q:按照什么顺序刷题?
A: 可以按照题目难度来,一开始多刷 easy 级别的,熟悉一下刷题的流程。如果时间充足的话,可以像作者一样,顺着 LeetCode 上题刷,先培养一些常用的解题思路,然后再慢慢加深巩固。
Q:选哪门编程语言刷?
A:作者的答案也是随便,不用纠结。算法与编程语言之间的关系就好像抄近道和交通工具之间的关系,算法只是用来降低时间复杂度和空间复杂度的。选一门熟悉的编程语言就好。作者选 Java 的主要原因是因为 Java 属于强类型语言,写出来的解题方法会更容易读懂一点。
Q:只刷题就能找到工作吗?
A:答案是显而易见的,我和作者保持同样的观点,只刷题肯定是不够的,还要了解岗位(前端、后端、算法)的相关知识,另外还要做一些练手项目,得有一些实战经验。
我和作者保持同样的观点,只刷题肯定是不够的,还要了解岗位(前端、后端、算法)的相关知识,另外还要做一些练手项目,得有一些实战经验。