Leetcode刷题记

@author: StormMa
@date 2017-11-02


生命不息,奋斗不止

前言

一个假acmer的重拾算法之路

算法是程序员的基本功,基本功的扎实程度一定上决定了你能走多远。前两年,急于学招式,招式学得差不多了,可是错过了大好的学习算法,练基本功的机会。不知不觉进入这个行业也两年多了,这两年基本上都在围绕着Javaweb做事,也算是有所收获吧,从一个接一个的业务项目,到后面自己写的简单框架: storm-server,应该也是到了能靠着Java解决温饱问题的地步了吧。这学期开始,我已经是一个即将要毕业的大三狗了,年后,面临春招,完了之后秋招。可谓是到了最关键的时期。正所谓自己选择的路,再苦再累都要坚持。本来大二时候就打算,大三上再找个实习出去转转,顺便散散心。但是真正到了这个时候,却没了那个念头了。究其原因,其一是对自己基础的不自信,现在也不敢面自己真正秋招想去的公司,二来之前实习过三次,大都是做业务,都是重复得CRUD,想来没有在学校自己复习基础更有用。所以,从一开始也就有了一系列的打算,从算法到OS再到网络,最后再看看多线程,jvm啥的,然后开始正式春招。现在第一个阶段进行不到三周,刷了近百道题目,自我感觉进步挺明显,思路也变得越来越开阔。

刷过的Leetcode题目全部托管在我的Github上的Algorithms项目上,如果你和我一样,也对算法感兴趣,或者想练基本功,欢迎star!如果对我的解法有疑问或者有更好的解法,欢迎交流。最后附上Leetcode刷题指南!

Leetcode刷题指南

摘自知乎

  1. 建议未刷过题的新人按着顺序来。前150题覆盖了很多经典题目和知识点,指针法类如『3 sum』系列,动规类如『regex matching』,搜索类题目如『Sodoku Solver』。

  2. 基本熟悉知识点(图、树、堆、栈、链表、哈希表、记忆搜索、动态规划、指针法、并查集等)后,可以一类类标签强攻。Leetcode 右侧的标签系统虽然未必 100% 完整,但是大致分类做得还不错。

  3. 面试前的一个月可以只做『Hard』标签的题目,因为一般两遍之后对于大部分『Medium』难度以下的题目都是肌肉记忆了。多练习『Hard』类题目可以让自己的思路更开阔,因为很多题目使用的奇淫巧技让人惊讶,比如 Leetcode 精心设计连续题号的『84. Largest Rectangle in Histogram』、『85. Maximal Rectangle』。

  4. 善用收藏夹,要养成『一道题第二次练习尚不能解就加入收藏夹』的习惯,且需要定期清空收藏夹:每道题不需提示下通过两次后才能移出收藏夹。

  5. 面试前可以购买会员,按照公司的标签来练习,也可以结合白板练习。面试前如果时间紧迫,那么练习的优先级分别是:即将面试公司的题目、收藏夹里的旧题目、剩余的新题。

  6. 冲刺阶段的练习请尽量不要打开题型标签,给自己思考的空间。

写在最后

刷题一定要坚持,一定要坚持,一定要坚持!坚持会看到不一样的自己。生命不息,奋斗不止!这句话送给正在努力的我和正在努力的你。

本博文来自我的个人博客,转载请注明出处