从去年年底开始想准备找实习,于是就开始懒散的复习。
大二学过数据结构,对基本的算法理论和数据结构有过了解,但是感觉又基本都交还给老师了
于是开始零散的复习,在leetcode上按照通过率由高到低开始刷,发现自己连通过率最高的几个题都吃力,几乎每个题都要去看题解然后慢慢消化
刷了十多个题就放弃了,这种盲目的玩法真的太伤自信心了
于是就去看书,先复习下基础,当然就盲目看书还是没学到什么东西
之后又看了慕课网的bobo老师的算法课程,感觉时间不多了就一口气的看完,边看边敲,感觉自己有点进步了,leetcode总共通过了80多个题了
后来,又尝试了去刷《剑指offer》的套题,凭借着题解刷到了40多个题,其他的题看着题解都感觉吃力了,于是又放弃了
过年期间懈怠了一下,然后再去做之前通过了的题,感觉还是不会做,原来之前会做都是因为有视频和参考题解的作用
这时才意识到自己的刷题方法有问题,只刷一遍是不对的,没有体系的刷是不对的
于是又回到最基础的知识点,选择按类型的反复刷,不强求每个类型刷多少个题,但一定要掌握知识点,每个题至少做五遍,保证不看题解和原来的代码自己可以凭借理解一步步写出代码
于是,我就开始高频考题和优质代码的整理和刷题,参考《极客时间-算法训练营》的题目和cyc2018
大佬的复习笔记中的高频题目开始整理自己的复习笔记,笔记内容都放在我的专栏《leetcode精选题集》
我刷题的步骤可以总结如下:
- 复习某个知识点理论知识
- 寻找某个知识点相关的高频题(5-10个)
- 开始刷题,先自己想解题思路
- 开始看
leetcode中文站
与该知识点相关的题解,写出第一版代码 - 上
leetcode全球站
查看高赞题解(看全球站只需要将中文站的网址leetcode-cn.com
改为leetcode.com
,其他的路径都是一致的) - 然后写出自己觉得最容易理解且效率较优的代码
- 每个知识点刷两三个题之后就先不要看题解,自己先做,做不出来再看题解
- 将每个知识点对应的题目和自己能很容易理解的代码整理成文档,空闲时间可以看一看
- 然后定期的反复刷专题,每次针对同一个知识点进行刷题
针对题目的选择和较为优化的代码,大家可以参考下我的专栏,我的代码全部是由Java编写的,且代码都是学习了大量题解后整理的较优的,如果有些题找不到较好的Java题解可以作为参考。
我对刷算法题的认知就:听再说的老师讲课不如自己去刷自己去理解,前前后后听了3套网上的面试算法题课程,老师都讲的特别好,但是自己动手较少,一写代码就不会,所以和我曾经一样算法一写就不会的可以尝试着按专题来逐个攻破
我刷题的目录整理如下,想体系化刷题的同学可以参考这个路径(标题链接我的专题文章,题目链接leetcode中文站题目)
我的专栏《leetcode精选题集》会一直更新,有好的建议欢迎大家在下方留言
更新时间:2020年3月24日12:30:34