刷leetcode不知道从哪里刷起?? 来看看,BAT工程师已经把刷题题目顺序都排好了,每道题还带详细题解!

4,492 阅读15分钟

相信很多小伙伴刷题的时候面对力扣上近两千道题目,感觉无从下手,我花费半年时间整理了Github项目:leetcode刷题攻略。 里面有200道经典算法题目刷题顺序、配有60w字的详细图解,常用算法模板总结,以及难点视频讲解,按照list一道一道刷就可以了!star支持一波吧!

为什么会有这篇刷题指南

很多刚开始刷题的同学都有一个困惑:面对leetcode上近两千到题目,从何刷起。

其实我之前在知乎上回答过这个问题,回答内容大概是按照如下类型来刷数组-> 链表-> 哈希表->字符串->栈与队列->树->回溯->贪心->动态规划->图论->高级数据结构,再从简单刷起,做了几个类型题目之后,再慢慢做中等题目、困难题目。

但我能设身处地的感受到:即使有这样一个整体规划,对于一位初学者甚至算法老手寻找合适自己的题目也是很困难,时间成本很高,而且题目还不一定就是经典题目。

对于刷题,我们都是想用最短的时间把经典题目都做一篇,这样效率才是最高的!

所以我整理了这篇leetcode刷题最强指南:一个超级详细的刷题顺序,每道题目都是我精心筛选,都是经典题目高频面试题,大家只要按照这个顺序刷就可以了,你没看错,就是题目顺序都排好了,文章顺序就是刷题顺序!挨个刷就可以,不用自己再去题海里选题了!

而且每道题目我都写了的详细题解(图文并茂,难点配有视频),力扣上我的题解都是排在对应题目的首页,质量是有目共睹的。

那么今天我把这个刷题顺序整理出来,是为了帮助更多的学习算法的同学少走弯路!

如果你在刷leetcode,强烈建议先按照本篇刷题顺序来刷,刷完了你会发现对整个知识体系有一个质的飞跃,不用在题海茫然的寻找方向

如何使用该刷题指南

大家在看下面题目文章的时候,就会发现有很多录友(代码随想录的朋友们)在文章下留言打卡,这份刷题顺序和题解已经陪伴了上万录友了,同时也说明文章的质量是经过上万人的考验!

欢迎每一位学习算法的小伙伴加入到这个学习阵营来!

如果你是算法老手,这篇攻略也是复习的最佳资料,如果把每个系列对应的总结篇,快速过一遍,整个算法知识体系以及各种解法就重现脑海了

在按照如下顺序刷题的过程中,每一道题解一定要看对应文章下面的留言(留言目前只能在手机端查看)。

如果你有疑问或者发现文章哪里有不对的地方,都可以在留言区都能找到答案,还有很多录友的总结非常赞,看完之后也很有收获。

目前「代码随想录」刷题指南更新了:140篇文章,精讲了101道经典算法题目,每个系列开始都有对应的理论基础讲解,系列结束都有对应的总结篇,部分难点题目还搭配了20分钟左右的视频讲解

说了这么多,那么你现在准备好了么,go go go!

资源下载

本资源由代码随想录原创出品:

(将陆续整理各个专题的PDF下载版本)

前序

数组

  1. 必须掌握的数组理论知识

  2. 数组:每次遇到二分法,都是一看就会,一写就废

  3. 数组:就移除个元素很难么?

  4. 数组:滑动窗口拯救了你

  5. 数组:这个循环可以转懵很多人!

  6. 数组:总结篇

链表

  1. 关于链表,你该了解这些!

  2. 链表:听说用虚拟头节点会方便很多?

  3. 链表:一道题目考察了常见的五个操作!

  4. 链表:听说过两天反转链表又写不出来了?

  5. 链表:环找到了,那入口呢?

  6. 链表:总结篇!

哈希表

  1. 关于哈希表,你该了解这些!

  2. 哈希表:可以拿数组当哈希表来用,但哈希值不要太大

  3. 哈希表:哈希值太大了,还是得用set

  4. 哈希表:用set来判断快乐数

  5. 哈希表:map等候多时了

  6. 哈希表:其实需要哈希的地方都能找到map的身影

  7. 哈希表:这道题目我做过?

  8. 哈希表:解决了两数之和,那么能解决三数之和么?

  9. 双指针法:一样的道理,能解决四数之和

  10. 哈希表:总结篇!(每逢总结必经典)

字符串

  1. 字符串:这道题目,使用库函数一行代码搞定

  2. 字符串:简单的反转还不够!

  3. 字符串:替换空格

  4. 字符串:花式反转还不够!

  5. 字符串:反转个字符串还有这个用处?

  6. 帮你把KMP算法学个通透!(理论篇)B站视频

  7. 帮你把KMP算法学个通透!(代码篇)B站视频

  8. 字符串:都来看看KMP的看家本领!

  9. 字符串:KMP算法还能干这个!

  10. 字符串:前缀表不右移,难道就写不出KMP了?

  11. 字符串:总结篇!

双指针法

双指针法基本都是应用在数组,字符串与链表的题目上

  1. 数组:就移除个元素很难么?

  2. 字符串:这道题目,使用库函数一行代码搞定

  3. 字符串:替换空格

  4. 字符串:花式反转还不够!

  5. 链表:听说过两天反转链表又写不出来了?

  6. 链表:环找到了,那入口呢?

  7. 哈希表:解决了两数之和,那么能解决三数之和么?

  8. 双指针法:一样的道理,能解决四数之和

  9. 双指针法:总结篇!

栈与队列

  1. 栈与队列:来看看栈和队列不为人知的一面

  2. 栈与队列:我用栈来实现队列怎么样?

  3. 栈与队列:用队列实现栈还有点别扭

  4. 栈与队列:系统中处处都是栈的应用

  5. 栈与队列:匹配问题都是栈的强项

  6. 栈与队列:有没有想过计算机是如何处理表达式的?

  7. 栈与队列:滑动窗口里求最大值引出一个重要数据结构

  8. 栈与队列:求前 K 个高频元素和队列有啥关系?

  9. 栈与队列:总结篇!

二叉树

题目分类大纲如下: 二叉树大纲

  1. 关于二叉树,你该了解这些!

  2. 二叉树:一入递归深似海,从此offer是路人

  3. 二叉树:听说递归能做的,栈也能做!

  4. 二叉树:前中后序迭代方式的写法就不能统一一下么?

  5. 二叉树:层序遍历登场!

  6. 二叉树:你真的会翻转二叉树么?

  7. 本周小结!(二叉树)

  8. 二叉树:我对称么?

  9. 二叉树:看看这些树的最大深度

  10. 二叉树:看看这些树的最小深度

  11. 二叉树:我有多少个节点?

  12. 二叉树:我平衡么?

  13. 二叉树:找我的所有路径?

  14. 还在玩耍的你,该总结啦!(本周小结之二叉树)

  15. 二叉树:以为使用了递归,其实还隐藏着回溯

  16. 二叉树:做了这么多题目了,我的左叶子之和是多少?

  17. 二叉树:我的左下角的值是多少?

  18. 二叉树:递归函数究竟什么时候需要返回值,什么时候不要返回值?

  19. 二叉树:构造二叉树登场!

  20. 二叉树:构造一棵最大的二叉树

  21. 本周小结!(二叉树系列三)

  22. 二叉树:合并两个二叉树

  23. 二叉树:二叉搜索树登场!

  24. 二叉树:我是不是一棵二叉搜索树

  25. 二叉树:搜索树的最小绝对差

  26. 二叉树:我的众数是多少?

  27. 二叉树:公共祖先问题

  28. 本周小结!(二叉树系列四)

  29. 二叉树:搜索树的公共祖先问题

  30. 二叉树:搜索树中的插入操作

  31. 二叉树:搜索树中的删除操作

  32. 二叉树:修剪一棵搜索树

  33. 二叉树:构造一棵搜索树

  34. 二叉树:搜索树转成累加树

  35. 二叉树:总结篇!(需要掌握的二叉树技能都在这里了)

回溯算法

题目分类大纲如下:

回溯算法大纲

  1. 关于回溯算法,你该了解这些!

  2. 回溯算法:求组合问题!

  3. 回溯算法:组合问题再剪剪枝

  4. 回溯算法:求组合总和!

  5. 回溯算法:电话号码的字母组合

  6. 本周小结!(回溯算法系列一)

  7. 回溯算法:求组合总和(二)

  8. 回溯算法:求组合总和(三)

  9. 回溯算法:分割回文串

  10. 回溯算法:复原IP地址

  11. 回溯算法:求子集问题!

  12. 本周小结!(回溯算法系列二)

  13. 回溯算法:求子集问题(二)

  14. 回溯算法:递增子序列

  15. 回溯算法:排列问题!

  16. 回溯算法:排列问题(二)

  17. 本周小结!(回溯算法系列三)

  18. 本周小结!(回溯算法系列三)续集

  19. 视频来了!!带你学透回溯算法(理论篇)

  20. 视频来了!!回溯算法(力扣题目:77.组合)

  21. 视频来了!!回溯算法剪枝操作(力扣题目:77.组合)

  22. 视频来了!!回溯算法(力扣题目:39.组合总和)

  23. 回溯算法:重新安排行程

  24. 回溯算法:N皇后问题

  25. 回溯算法:解数独

  26. 一篇总结带你彻底搞透回溯算法!

贪心算法

题目分类大纲如下:

贪心算法大纲

  1. 关于贪心算法,你该了解这些!

  2. 贪心算法:分发饼干

  3. 贪心算法:摆动序列

  4. 贪心算法:最大子序和

  5. 本周小结!(贪心算法系列一)

  6. 贪心算法:买卖股票的最佳时机II

  7. 贪心算法:跳跃游戏

  8. 贪心算法:跳跃游戏II

  9. 贪心算法:K次取反后最大化的数组和

  10. 本周小结!(贪心算法系列二)

  11. 贪心算法:加油站

  12. 贪心算法:分发糖果

  13. 贪心算法:柠檬水找零

  14. 贪心算法:根据身高重建队列

  15. 本周小结!(贪心算法系列三)

  16. 贪心算法:根据身高重建队列(续集)

  17. 贪心算法:用最少数量的箭引爆气球

  18. 贪心算法:无重叠区间

  19. 贪心算法:划分字母区间

  20. 贪心算法:合并区间

  21. 本周小结!(贪心算法系列四)

  22. 贪心算法:单调递增的数字

  23. 贪心算法:买卖股票的最佳时机含手续费

  24. 贪心算法:我要监控二叉树!

  25. 贪心算法:总结篇!(每逢总结必经典)

动态规划

动态规划专题已经开始啦,来不及解释了,小伙伴们上车别掉队!

  1. 关于动态规划,你该了解这些!

  2. 动态规划:斐波那契数

  3. 动态规划:爬楼梯

  4. 动态规划:使用最小花费爬楼梯

  5. 本周小结!(动态规划系列一)

  6. 动态规划:不同路径

  7. 动态规划:不同路径还不够,要有障碍!

  8. 动态规划:整数拆分,你要怎么拆?

  9. 动态规划:不同的二叉搜索树

  10. 本周小结!(动态规划系列二)

背包问题系列:

背包问题大纲

  1. 动态规划:关于01背包问题,你该了解这些!

  2. 动态规划:关于01背包问题,你该了解这些!(滚动数组)

  3. 动态规划:分割等和子集可以用01背包!

  4. 动态规划:最后一块石头的重量 II

  5. 本周小结!(动态规划系列三)

  6. 动态规划:目标和!

  7. 动态规划:一和零!

  8. 动态规划:关于完全背包,你该了解这些!

  9. 动态规划:给你一些零钱,你要怎么凑?

  10. 本周小结!(动态规划系列四)

  11. 动态规划:Carl称它为排列总和!

  12. 动态规划:以前我没得选,现在我选择再爬一次!

  13. 动态规划: 给我个机会,我再兑换一次零钱

  14. 动态规划:一样的套路,再求一次完全平方数

  15. 本周小结!(动态规划系列五)

  16. 动态规划:单词拆分

  17. 动态规划:关于多重背包,你该了解这些!

  18. 听说背包问题很难? 这篇总结篇来拯救你了

打家劫舍系列:

  1. 动态规划:开始打家劫舍!

  2. 动态规划:继续打家劫舍!

  3. 动态规划:还要打家劫舍!

股票系列:

股票问题总结

  1. 动态规划:买卖股票的最佳时机

  2. 动态规划:本周我们都讲了这些(系列六)

  3. 动态规划:买卖股票的最佳时机II

  4. 动态规划:买卖股票的最佳时机III

  5. 动态规划:买卖股票的最佳时机IV

  6. 动态规划:最佳买卖股票时机含冷冻期

  7. 动态规划:本周我们都讲了这些(系列七)

  8. 动态规划:买卖股票的最佳时机含手续费

  9. 动态规划:股票系列总结篇

子序列系列:

  1. 动态规划:最长递增子序列

  2. 动态规划:最长连续递增序列

  3. 动态规划:最长重复子数组

  4. 动态规划:最长公共子序列

  5. 动态规划:本周我们都讲了这些(系列八)

  6. 动态规划:不相交的线

  7. 动态规划:最大子序和

  8. 动态规划:判断子序列

  9. 动态规划:不同的子序列

  10. 动态规划:两个字符串的删除操作

  11. 动态规划:本周我们都讲了这些(系列十)

(持续更新中....)

图论

贪心 -> 动态规划 -> 图论

总结

这里我重点强调一下:经典题目不是刷一遍就完事的,要刷很多遍,因为大家在刷某个专题的时候,一定会忘一些之前的知识,例如刷到了贪心,可能回溯就已经有点想不起来了。

所以一定要多刷,加深记忆,然后面试之前一段时间就开始看各个专题的总结篇,进行快速回顾

目前在电脑端查看文章,可以Github上:github.com/youngyangya… - 2天,欢迎顺便给个star!

可以在B站上关注我的视频 B站上找我

另外我已经将「代码随想录」的算法文章按照由浅入深的刷题顺序编排起来,整理成册,陆续整理出PDF版本了

先上图:

pdf

赶紧去下载看看,你会发现相见恨晚! BAT程序员的算法学习手册开放下载!

如果感觉对你有帮助,要不吝啬给个赞吧!