注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
本帖最后由 大队管理员 于 2019-10-16 00:20 编辑
现在已经两点了,刚刚总结完做过的所有DP 兴奋有点睡不着觉,因为DP一直是我最最最恐惧的一种算法,但就在刚才总结完一切豁然开朗的感觉。决定回顾一下刷题这两个月我学到了什么,也算是为了记录一下自己成长吧,如果可以帮到别人那是再好不过。还是地里各位大佬们老生常谈的一些道理。先说下刷题过程吧,再总结下这两个月我学到了什么。先讲下我自己吧,我是那种很懒拖延症很强的人,所以本身就是cs系的人直到快要毕业才开始刷题。刚开始坚持刷题真的很痛苦,但我在这里不想说一些鸡汤废话劝你坚持,因为你真的想就没有那么多理由。好了言归正传,起初我也和地里很多新人一样会去看一些 “题到底该怎么刷?”“怎么样刷题效率最高之类的帖子”,因为我和在座的各位一样想要学些经验“少走弯路”但很多方式都是因人而异所以 一开始看了很多我也是云里雾里。之后就开始按照帖子里的经验开始刷题 第一个月疯狂刷了300题 (当然有一部分女票威逼利诱的成分,在此感谢她激发了一个懒癌患者的热血刷题),很多人一定会想这样刷真的有用吗?这里我一会儿再讲。之后在这一个月里我也加入了一个刷题群, 每天晚上听着大佬们讲题,每日十题 雷打不动,当然自己每天也会尽量准备两道题来讲。后来第二个月我放缓了节奏我只刷了100道新题,然后回去开始老老实实复习前面的题。复习的时候我有个最大的感受,“我靠好熟啊,怎么忘了...”。其实这也很正常毕竟人脑不是电脑。所以接下来我的打算是继续复习+总结+少量的新题。
首先最重要的一点就是在于精而不在于多,但是在我看来刷题是个漫长沉淀的过程,而你的精往往取决于你的量至少要达到某个临界值,所以在此之前你就不要想着过于求精了。因为很多问题 你即使弄懂 99.999999% 还是有那么一小点你可能会弄不清楚,不是因为你脑子不够好而是因为你见的还不够多,或者说浪费力气钻牛角尖,不如先多看看招式。就像你和别人过招的时候,最可怕的事情不是你的对手有多强大而是你不知道你对手可能会如何出招。所以这也引发了我第一个月为何快速刷的原因,我想要看更多的题目类型,解决方式。因为在学校上过算法课,很多东西是见过但不熟,所以基础知识的东西补起来很快。但是知识放在那是死的,你得会用才真的有用,一开始看更多的题只是为了学习解决的思路,当然这也引发了一些弊端比如 急功近利可能细节做得不够好。至于刚开始刷怎么刷这么多和地里选手们大同小异,有不会的“看答案,看discussion...思考5-10分钟,想不出就看”。不用有心理负担,做题不是让你创造,是让你在原有的基础上熟练运用解决,套路见的多了你才能见招拆招。所以第一步所需要的就是量来沉淀。
第二点 按照知识点来刷题。不管是什么时候按照知识点来说但是一个不错的选择。如果是刚刚开始,因为有很多东西是不会或者不熟,每做一个不同类型的题目的时候就要去补充关于这个题目知识,所以说在这样反复折腾的过程中,疲倦厌恶烦躁的情绪就会产生。最重要的是效率没法得到保证。所以我的做法就是建个list 把同类型的题 从 easy 到hard 按照一定比例放进list里,第二天的目标就是补充这方面知识,把这个list搞定。同理如果像我现在一样刷了一段时间,可能套路都见过了但是还是有不确定或者恐惧的算法,老样子按照同类型揪出来 硬刚 不管是做过还是没有做过的。这里放一下比较重要的类型吧方便自己以后看,毕竟以后要干这行随时可能跳槽。
1.Binary Search 2. DFS, BFS,Best FS 3. Iteration /recursion 4. LinkedList 5. Graph/tree 6. Queue/Stack/Heap 7.DP 8. Array/String 9. Set/HashMap 9.Bit 10.Sliding window 11. Sorting 12. Multiple pointers 13. Trie etc.
第三点 复习加总结这点其实不用赘述,但是重点就在于怎么总结上。虽说做题是为了开阔思路做到兵来将挡水来土掩,但是不加以思考+记忆是无法融入到自己的解决方式的。这也是我第二个月开始做的东西。套模板听起来是不是很low,但是我这两个月给我的刷题感受就是如果想要快速短时间做出一道题,大概的模板是要有的就比如让你求个什么条件下的substring,比如让你求个permutation等等 这些需要自己做题的过程中不断总结。当然这里说的模板不是说你背下来就万事大吉了,而是根据不同情况要求做出调整。
最后希望各位真的能为了自己的目标而快乐的努力。
|