‘壹’ LeetCode按照怎样的顺序来刷题比较好
首先,如果你的时间特别紧,直接刷题当然没有问题。但我的经验是,如果你有相对宽裕的一些时间,除了想准备算法面试以外,还想真正把算法和数据结构的基础打扎实,应该先认真学习经典的算法和数据结构的底层原理。如果你的时间特别紧,可以直接跳到下面第二部分,“刷题篇”。
首先,这里面的很多内容,是刷题涉及不到的。比如在刷题的时候,基本不会遇到让你实现一个排序算法的情况,如果需要排序,通常是直接调用语言的标准库就好了。但是,我知道很多厂子的面试问题,恰恰就是“讲一讲快速排序是怎么回事儿,归并排序是怎么回事儿,红黑树的基本原理”。
等等这类问题。另一方面,其实对这些基础的算法和数据结构的学习,很多时候并不完全是学习一个算法这么简单,而蕴含着对算法思想的学习。我们可以看到,为了解决一个问题,我们可以如何设计算法。
最典型的例子就是递归。很多同学都觉得递归很绕。但是,在我列的这个列表中,所有的算法如果真的踏踏实实都搞明白了,我相信对递归是不怕的。无论是学习快速排序和归并排序,还是实现各种树结构中的基本操作。
都在不停地使用递归。我们在学习这些内容的时候,并非是简单的死记硬背,而是在看一些算法思想的具体应用。