6

刷LeetCode刷到怀疑智商?快来看,Google大佬已经把最佳刷题顺序理好了!

 3 years ago
source link: https://zhuanlan.zhihu.com/p/379111595
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

刷LeetCode刷到怀疑智商?快来看,Google大佬已经把最佳刷题顺序理好了!

FLAG资深工程师,美帝代码搬运工,公众号:九章算法

很多同学反馈在刷LeetCode/LintCode时,总觉得题目太多无从下手,又或者盲目刷题适得其反。

为此,我花了半年时间整理出了这篇LC最强刷题攻略,里面不但有高频题、变形题以及对应题解,就连相关的学习资料都给你整理好了。

这份攻略同时还在Github上开源,绝对硬核,一起来看下去吧!

戳我直达Github开源项目

v2-74b9f8ba6159cb95ea8919edb5d7b28a_720w.jpg


为什么写这篇攻略

作为前ACM金牌选手,我曾在知乎上回答过很多关于提高编程能力、提升刷题技巧的问题。回答思路大致根据不同人群的学习阶段进行分组练习:

入门阶段:基本数据类型→判断语句→数组与循环→字符串与循环→栈与队列→简单递归

进阶阶段:链表→二分法→二分答案→相向双指针→宽度优先搜索→二叉树遍历→二叉树&分治法→二叉树搜索树→深度优先搜索→坐标型动态规划→背包型动态规划→匹配型动态规划

根据不同学习阶段,从相对简单的题目刷起,然后逐步提升难度

但我也从大家的反馈中感受到:即便是给你一个完整的刷题路径,对于一个初学小白或者算法老手来说,找到适合自己的题目还需要付出很大的时间成本。

而这篇总结,是想通过最短的时间,将经典的、高频的算法题都做一遍,这样效率才最高。

所以LC最强刷题攻略就诞生了:在分阶段刷题的基础上,对题目类型及所需知识点进行了细化。每一题都是我精心挑选的,也有很多同学反馈跟着这套攻略刷题后,在面试中遇到了原题。所以大家只要按照这个顺序去刷题就对了!

如何使用Lintcode最强刷题攻略

在这套刷题攻略中,目前更新了初级与进阶两个阶段,每一阶段都有理论基础及教学视频讲解,不同于其他干货的纯理论输出,而是加入了项目实战及源码书写的内容。带你完完整整的了解整个知识体系。

对于算法老手来说,这篇攻略是最佳复盘攻略,可以在跳槽前快速过一遍,提高上岸成功率。

这里总结的每一题都是面试高频题/常考知识点,值得大家反复钻研。

多说无益,一起来动手实操吧!

初阶必刷编程50题

阶段一:基本数据类型

题目分类大纲如下:

考察类型

没有条件控制,没有循环,单纯的按从上到下的顺序执行代码,例如数学计算,取模等问题。

必刷题目

1.A + B 问题

2.反转一个3位整数

3.计算圆周长和面积

4.巴什博奕

阶段二:判断语句

题目分类大纲如下:

考察类型

主要考察选择结构,没有循环,有if,else if,else等判断语句,例如判断闰年等问题

必刷题目

5.判断数字与字母字符

6.闰年

7.大小写转换

8.月份天数

9.简单计算器

10.三数之中的最大值

阶段三:数组与循环

题目分类大纲如下:

考察类型

主要考察数组、循环语句,以while、for循环为代码主体的题,不要出现字符串,如数组求和等问题。

必刷题目

11.打印X

12.数组的最大值

13.生成给定大小的数组

14.移动零

15.寻找最大值

16.交换数组两个元素

17.Fizz buzz问题

18.冰雹猜想

19.加一

20.回文数II

21.整数排序

22.寻找素数

23.数组第二大数

24.主元素

25.杨辉三角

26.旋转数组

27.回文数II

28.分解质因数

29.反转字符串中的单词

30.数组剔除元素后的乘积

阶段四:字符串与循环

题目分类大纲如下:

考察类型

考察字符串操作,例如判断回文串、求子串等问题

必刷题目

31.旋转字符串

32.回文数

33.大小写转换II

34.最后一个单词的长度

35.最大字母

36.首字母大写

37.转换字符串到整数

38.字符串查找

39.转换成小写字母

40.两字符串和

41.最长单词

阶段五:栈与队列

题目分类大纲如下:

考察类型

栈与队列,主要考察栈和队列的特性,调用库来完成题目要求,或简单实现,比如括号匹配等问题

必刷题目

42.小括号匹配

43.有效的括号序列

44.实现栈

45.队列维护

46.二阶阶乘

阶段六:简单递归

题目分类大纲如下:

考察类型

递归类问题,超简单的那种,比如斐波那契

必刷题目

47.斐波那契数列

48.二叉树的前序遍历

49.二叉树的中序遍历

50.二叉树的后序遍历

参考学习资料

九章算法

包含面试算法知识点及考察频率,教你做到刷100题等于别人刷300题,覆盖90%国内外一线大厂算法面试高频考点,一个月内搞定算法面试。

目前开放免费试听章节,感兴趣的戳这里

递归九讲

适合基础相对薄弱的同学,可以通过大量实操演练互动学习,掌握面试中常考的二叉树、排列组合等问题。带你在短时间内掌握递归算法的解题思路。同样开放免费试听,感兴趣的可以戳这里

进阶必刷编程80题

阶段一:链表

题目分类大纲如下:

必刷题目

翻转链表(一) Algorithms

翻转链表(二)

K组翻转链表

链表的中点

带环链表

带环链表 II

链表排序

阶段二:二分法

题目分类大纲如下:

必刷题目

二分查找

搜索二维矩阵

寻找峰值

经典二分查找问题

目标最后位置

阶段三:二分答案

题目分类大纲如下:

必刷题目

木材加工

书籍复印

方阵排队

评委出题

阶段四:相向双指针

题目分类大纲如下:

必刷题目

两数之和

三数之和

四数之和

接雨水

移动零

合并排序数组

最小子串覆盖

去除重复元素

全零子串的数量

字符串划分

两数组的交集

和大于S的最小子数组

阶段五:宽度优先搜索

题目分类大纲如下:

必刷题目

岛屿的个数

课程表

骑士的最短路径II

单词接龙

图是否是树

绘制填充

迷宫

阶段六:二叉树遍历

题目分类大纲如下:

必刷题目

二叉树的前序遍历

二叉树的中序遍历

二叉树的后序遍历

二叉树的层次遍历

前序遍历和中序遍历树构造二叉树

中序遍历和后序遍历树构造二叉树

阶段七:二叉树&分治法

题目分类大纲如下:

必刷题目

对称二叉树

二叉树中最近的叶子

最小子树

最大子树

具有最大平均数的子树

阶段八:二叉树搜索树

题目分类大纲如下:

必刷题目

BST中第K小的元素

BST的中序前驱节点

在二叉查找树中插入节点

验证二叉查找树

两数之和 - BST版本

阶段九:深度优先搜索

题目分类大纲如下:

必刷题目

订单分配

单词矩阵

数独

因式分解

汉诺塔

电话号码的字母组合

N皇后问题(一)

阶段十:坐标型动态规划

题目分类大纲如下:

必刷题目

不同的路径

不同的路径 II

老鼠跳跃

停在原地的方案数2

最长上升子序列

数字三角形

不同的子序列 II

阶段十一:背包型动态规划

题目分类大纲如下:

必刷题目

换硬币

组合总和 IV

背包问题

举重

浮点数组合和

背包问题(二)

背包问题 III

背包问题 IV

背包问题 V

最小划分

阶段十二:匹配型动态规划

题目分类大纲如下:

必刷题目

编辑距离

最长公共子序列

最长公共子串

正则表达式匹配

通配符匹配

最后,希望这篇攻略能让你有所收获

看到这里的人都能上岸,点个赞再走吧~


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK