leetcode刷题是大部分基础不好的同学非常头疼的事情,也很容易出现一些误区。我根据自己的经验,提出三个容易遇见的误区,希望能帮助大家形成对此的认识:
(1)有决心,一定铁杵磨成针,然后撸起袖子就是干 —— NO
(2)刷题看量,你只要刷了够多,公司就随你挑——NO
(3)刷题就是啃硬骨头,如果想不出来一定要死磕,或者就是把这个题背下来——NO
讲完误区,我也在这里分享一下自己的心得。
第一点,刷题实际上是以
数据结构与算法为核心基础的。
大家遇到每道题的时候,可以采取“
三步走”的方式,第一,看一下这个题目是不是能做出来;第二,如果做不出来,看一下能不能看出来用的什么数据结构与算法;第三,如我看不出来的话,再去discussion区域看一下高票的回答,看完之后理解透彻,看一下自己能不能独立写完。
第二点,能力和量是没有一个必然关系的,还是要做到理解一道题。
在你面前出现千万次,你都能把他顺利写出来,而且能够分析出它的时间复杂度与空间复杂度,才是真正“写完”了这道题。有一个很好的思路是,对一道题来讲,可以去掌握它的最优解和经典解。比如说,有的题可以用这个DP来完成,你还应该用DFS来写一遍。
第三点,刷题不能死磕,也不能硬背。
刷题方法是看题后先思考用什么数据结构,用什么算法?时间和空间的复杂度是多少?是不是最优解?如果看的出来最优解,那么就直接上手。如果看不出来,或者感觉没想清楚,立刻探寻
discussion里的最优解和经典解,分析他们的时间和空间复杂度。并且反思为什么会想到用这样的数据结构与算法,然后独立再写一遍,如果看discussion还是懵懵懂懂,那就把它加入一个waitlist准备二刷。
最后,大家可以把自己所有做过的题通过tag的方式更好地做分类和管理。通过这样的方式,你会更容易在不同的题中找到一些规律,以后遇到新的题型,会很容易想到熟悉的解法。