很多同学反馈在刷LeetCode/LintCode时,总觉得题目太多无从下手,又或者盲目刷题适得其反。
为此,我花了半年时间整理出了这篇LC最强刷题攻略,里面不但有高频题、变形题以及对应题解,就连相关的学习资料都给你整理好了。
这份攻略同时还在Github上开源,绝对硬核,一起来看下去吧!

为什么写这篇攻略
作为前ACM金牌选手,我曾在知乎上回答过很多关于提高编程能力、提升刷题技巧的问题。回答思路大致根据不同人群的学习阶段进行分组练习:
入门阶段:基本数据类型→判断语句→数组与循环→字符串与循环→栈与队列→简单递归
进阶阶段:链表→二分法→二分答案→相向双指针→宽度优先搜索→二叉树遍历→二叉树&分治法→二叉树搜索树→深度优先搜索→坐标型动态规划→背包型动态规划→匹配型动态规划
根据不同学习阶段,从相对简单的题目刷起,然后逐步提升难度
但我也从大家的反馈中感受到:即便是给你一个完整的刷题路径,对于一个初学小白或者算法老手来说,找到适合自己的题目还需要付出很大的时间成本。
而这篇总结,是想通过最短的时间,将经典的、高频的算法题都做一遍,这样效率才最高。
所以LC最强刷题攻略就诞生了:在分阶段刷题的基础上,对题目类型及所需知识点进行了细化。每一题都是我精心挑选的,也有很多同学反馈跟着这套攻略刷题后,在面试中遇到了原题。所以大家只要按照这个顺序去刷题就对了!
如何使用Lintcode最强刷题攻略
在这套刷题攻略中,目前更新了初级与进阶两个阶段,每一阶段都有理论基础及教学视频讲解,不同于其他干货的纯理论输出,而是加入了项目实战及源码书写的内容。带你完完整整的了解整个知识体系。
对于算法老手来说,这篇攻略是最佳复盘攻略,可以在跳槽前快速过一遍,提高上岸成功率。
这里总结的每一题都是面试高频题/常考知识点,值得大家反复钻研。
多说无益,一起来动手实操吧!
初阶必刷编程50题
阶段一:基本数据类型
题目分类大纲如下:

考察类型
没有条件控制,没有循环,单纯的按从上到下的顺序执行代码,例如数学计算,取模等问题。
必刷题目
1.A + B 问题
2.反转一个3位整数
3.计算圆周长和面积
4.巴什博奕
阶段二:判断语句
题目分类大纲如下:

考察类型
主要考察选择结构,没有循环,有if,else if,else等判断语句,例如判断闰年等问题
必刷题目
6.闰年
7.大小写转换
8.月份天数
9.简单计算器
10.三数之中的最大值
阶段三:数组与循环
题目分类大纲如下:

考察类型
主要考察数组、循环语句,以while、for循环为代码主体的题,不要出现字符串,如数组求和等问题。
必刷题目
11.打印X
12.数组的最大值
13.生成给定大小的数组
14.移动零
15.寻找最大值
16.交换数组两个元素
17.Fizz buzz问题
18.冰雹猜想
19.加一
20.