最近自习室里又兴起了一阵刷题潮,你们相约刷题~git
今天和你们系统分享下我去年转行时的一个刷题过程和方法,但愿对你有所帮助。github
首先介绍下个人编程基础,我学的是金融工程专业,硕士时学过 C++ 的课,这也是个人编程入门课(但我我的很是不推荐用 C++ 入门)。这门课的重点是 C++ 在金融领域的应用,好比给 Option 订价,基本不涉及算法和数据结构。面试
因此我是有必定编程基础的,可是对算法和数据结构是小白,也不懂空间复杂度和时间复杂度为什么物。算法
另外说明一下个人时间,我是在工做后才开始刷题,因此是晚上和周末来刷,时间比较紧张,若是是学生的话在个人基础上要多刷一些哟。编程
下面上干货。微信
我把个人刷题过程分为 3 阶段。数据结构
时间是 3 个月,作了 128 道题,平均天天 1-2 题。dom
这一阶段刷题对我来讲,是一个学习数据结构和算法的过程。数据结构和算法
因此若是是科班的同窗这一步就能够跳过了。学习
常常有同窗问这个刷题顺序问题:
我认为在不一样阶段是不同的,那么第一阶段我是按照算法类型来刷,每一个类型大概花 1-2 周的时间。
那到底先刷哪一个类型呢?
刷 DP?
这不是劝退么?
这里对于小白来讲,合理的学习曲线是很是重要的,不然一上来数据结构都不清楚去作难的算法题容易受打击。
那么怎样才是合理的学习曲线呢?
我说的不算,其余人的也只是他我的经验,而应该是看名校的口碑课程是怎么安排的,看教授为你制定的学习计划。
好比第一周,咱们去刷排序算法。
那在这个具体的分类下,题目按什么顺序来作呢?
把题目按照频率从高到低的顺序来作,也就是出现频率高,常考的咱们先作。
那对于每一道题应该怎么作呢?
首先我会先本身思考 5 分钟,那若是过了 5 分钟尚未任何思路,就没必要强求了,看答案吧。
Leetcode 有一个讨论区,里面有很是多的大神给的解答,重点不是看他的代码,而是看他怎么想的,怎么分析的这个问题。
若是尚未理解,那我会去搜一下视频讲解。
这里推荐一个小哥,也是我惟一推荐的 Leetcode 视频讲解:
国内的小伙伴可能不太方便看这个,你们在留言区说下你推荐的视频讲解吧~
对于在北美求职的同窗,这小哥的英文对面试也会很是有帮助。
这样就把一个刷题计划落实到了第一个分类、第一周、第一天该作什么。
可是作完题不是就万事大吉了,最重要的一步是须要吸取、内化成本身的。
我喜欢的是写“解题报告”:
<,
>
把这道题考查了哪些知识点,正确的思路是怎样的,别人是怎么想到的,代码是怎么写的,代码有什么小技巧,都记录下来。
这个是跟我当时一块儿刷题的小伙伴学的,而且咱们互相讲题,这样效果更好。因此这里强烈建议你们组队刷题,互相监督提升。
那么周末的时候复习和总结,我通常会作:
这里看书不是指把书从头看到尾,而是抓住重点章节,好比排序算法,那就参考 MIT 教授给你画的重点,只看《算法导论》的这些章节,这才是偷懒的正确打开方式啊。
不过,若是你的时间很充足,固然是系统的看书、上课更好了,会有更加平缓的学习曲线。
这样 3 个月后我把基本的算法类型都刷过了,数据结构也都深刻理解了,刚开始作的题目也差很少都忘了,那么开始第二阶段。
这一阶段我花了 1 个半月的时间,复习了第一阶段的题目,并作了 100 道新题。
这一阶段我是记录在 Excel 里:
第二阶段作的差很少的时候,就把 Linkedin 设置为 “open to market“,就会有猎头找我了,那一旦拿到面试,就到了第三阶段。
这一阶段的重点是找到面试的状态和感受,而且快速写出代码。
那么个人方法是
这一阶段的刷题顺序我会按公司分类来刷,Leetcode 上有 company tag,若是是国内的小伙伴能够参考这个 Github: https://github.com/afatcoder/LeetcodeTop
,列举了国内几大互联网公司常考的面试题,那么就会更有针对性的准备面试。
这一阶段又陆陆续续作了 100 题,同时面完了全部的面试,就收工啦。
最后呢,再送个你们 3 个很好用的 Github 资料:
https://github.com/afatcoder/LeetcodeTop
https://github.com/wisdompeak/LeetCode
https://github.com/grandyang/leetcode
另外还有一份精选的刷题笔记也想送给你们,以前在视频号里推荐过了,尚未领的小伙伴在公众号后台回复「笔记」就有啦。
那以上就是我刷题经验的整个过程啦,若是还有任何问题欢迎留言或者私信告诉我,若是想加入自习室和你们一块儿刷题的也欢迎加我微信,备注:自习。
我是小齐,纽约程序媛,点击下方视频了解个人故事吧~