很多初学者在刷题的时候,毫无头绪,有时候以为是 动态规划 的知识点,结果写了半天代码越写越头疼,最后一看 discuss 原来可以用 栈 来解决。

如果你也遇到过这种情况,又或者刷完题就忘。这里提供给你一个“特别”的角度,带你轻松掌握刷题技巧。建议认真看下去
不是自夸,我之前曾在2家北美顶尖IT企业就职并担任面试官,刷题数超过 3000 题,所以在刷题方面还算有点心得,所以在这里分享给大家,希望对大家有帮助!
首先我们要明确一点:刷题一定是有目的的,有人是为了学习算法与数据结构,有人是想跳槽刷题练手,还有的人是抱着竞赛目的来刷的……
OK,那我们就根据这几个目的,“功利”地开始刷LintCode,保证你事半功倍。
找准定位,根据自身水平循序渐进刷题
我个人理解的“高效”,应该是刷有意义的题,刷对你有帮助的题。如果你是算法小白,你可以先从入门题开始,慢慢过渡到简单/中等/困难。如果你是一个工作了1-3年,有一定算法基础的工程师,可以根据自己的情况着重补齐短板,入门题和简单题可以少刷或不刷了。
如果不清楚自己的编码能力,还可以试试LintCode上的CAT码力测试。

放一些面试常考算法类型和经典题
动态规划
按知识点tag刷,形成算法与数据结构体系
很多同学看到LC上近2000道题,也许会觉得无从下手,对于算法小白来说尤为如此。
刷题一个很重要的观念就是不要把“刷了多少题”作为指标。正确的刷法应该是把问题拆解,分解为具体的问题模式和对应的解决方法。
比如某某题属于二叉树、用到了某某算法,对于不熟悉的部分,有针对性的练习;完全理解后,再做类比思考,一举反三,逐渐地就会构建起自己的算法知识体系。

堆
瞄准目标公司进行刷题
如果是为了求职面试,那么最高效的刷题方式就是按对应公司tag去刷。

国内外大厂的面试风格不同,常考的题目类型、知识点,算法面试难度也不同。有的公司喜欢考原题,那么抓住高频题去刷就可以事半功倍;而有的公司总是出新题,那么就不要抱着押题的想法去刷,而是重点关注这些公司偏爱考哪些知识点。
如果你已经有目标公司,并且在短期内要去面试,可以直接在LintCode上筛选公司:国内的阿里、腾讯、字节、百度,国外的Airbnb、Amazon、Facebook……针对性的刷题,目标感更强,方向也更精准,对于提高面试通过率是很有帮助的。
二叉树
找到刷题的乐趣

如果你是一个毅力不太够的人,还可以用闯关式的方法进行答题。
选择LintCode的阶梯训练,不但可以根据公司进行刷题,还能进行闯关答题的方式。这种方式可以增加趣味性,还能让你更有答题的兴趣。
最后,愉快地刷起来吧~
二分法
哈希表
链表
深度优先搜索
字符串处理