目录:
算法面试思维导图
B站算法视频讲解
以下为B站「代码随想录」算法讲解视频:
- 帮你把KMP算法学个通透!(理论篇)
- 帮你把KMP算法学个通透!(代码篇)
- 带你学透回溯算法(理论篇)
- 回溯算法之组合问题(力扣题目:77.组合)
- 组合问题的剪枝操作(对应力扣题目:77.组合)
- 组合总和(对应力扣题目:39.组合总和)
(持续更新中....)
LeetCode 刷题攻略
刷题攻略的背景
很多刚开始刷题的同学都有一个困惑:面对leetcode上近两千道题目,从何刷起。
其实我之前在知乎上回答过这个问题,回答内容大概是按照如下类型来刷数组-> 链表-> 哈希表->字符串->栈与队列->树->回溯->贪心->动态规划->图论->高级数据结构,再从简单刷起,做了几个类型题目之后,再慢慢做中等题目、困难题目。
但我能设身处地的感受到:即使有这样一个整体规划,对于一位初学者甚至算法老手寻找合适自己的题目也是很困难,时间成本很高,而且题目还不一定就是经典题目。
对于刷题,我们都是想用最短的时间把经典题目都做一篇,这样效率才是最高的!
所以我整理了leetcode刷题攻略:一个超级详细的刷题顺序,每道题目都是我精心筛选,都是经典题目高频面试题,大家只要按照这个顺序刷就可以了,你没看错,就是题目顺序都排好了,文章顺序就是刷题顺序!挨个刷就可以,不用自己再去题海里选题了!
而且每道题目我都写了的详细题解(图文并茂,难点配有视频),力扣上我的题解都是排在对应题目的首页,质量是有目共睹的。
那么今天我把这个刷题顺序整理出来,是为了帮助更多的学习算法的同学少走弯路!
如果你在刷leetcode,强烈建议先按照本攻略刷题顺序来刷,刷完了你会发现对整个知识体系有一个质的飞跃,不用在题海茫然的寻找方向。
文章会首发在公众号「代码随想录」,赶紧去看看吧,你一定会发现相见恨晚!
如何使用该刷题攻略
电脑端还看不到留言,大家可以在公众号「代码随想录」,后台回复:力扣刷题指南,便可以获得手机版刷题指南,看完就会发现有很多录友(代码随想录的朋友们)在文章下留言打卡,这份刷题顺序和题解已经陪伴了上万录友了,同时也说明文章的质量是经过上万人的考验!
欢迎每一位学习算法的小伙伴加入到这个学习阵营来!
目前已经更新了,数组-> 链表-> 哈希表->字符串->栈与队列->树->回溯->贪心,八个专题了,即将开始动态规划!
在刷题指南中,每个专题开始都有理论基础篇,并不像是教科书般的理论介绍,而是从实战中归纳需要的基础知识。每个专题结束都有总结篇,最这个专题的归纳总结。
如果你是算法老手,这篇攻略也是复习的最佳资料,如果把每个系列对应的总结篇,快速过一遍,整个算法知识体系以及各种解法就重现脑海了。
在按照如下顺序刷题的过程中,每一道题解一定要看对应文章下面的留言(留言目前只能在手机端查看)。
如果你有疑问或者发现文章哪里有不对的地方,都可以在留言区都能找到答案,还有很多录友的总结非常赞,看完之后也很有收获。
目前「代码随想录」刷题指南更新了:160篇文章,精讲了100+道经典算法题目,共50w字的详细图解,部分难点题目还搭配了20分钟左右的视频讲解。
准备好了么,刷题攻略开始咯,go go go!
资源下载
本资源由代码随想录原创出品:
(将陆续整理各个专题的PDF下载版本)
前序
-
编程语言
-
编程素养
-
工具
-
求职
-
算法性能分析
(持续更新中.....)
数组
链表
- 关于链表,你该了解这些!
- 链表:听说用虚拟头节点会方便很多?
- 链表:一道题目考察了常见的五个操作!
- 链表:听说过两天反转链表又写不出来了?
- 链表:删除链表的倒数第 N 个结点
- 链表:环找到了,那入口呢?
- 链表:总结篇!
哈希表
- 关于哈希表,你该了解这些!
- 哈希表:可以拿数组当哈希表来用,但哈希值不要太大
- 哈希表:哈希值太大了,还是得用set
- 哈希表:用set来判断快乐数
- 哈希表:map等候多时了
- 哈希表:其实需要哈希的地方都能找到map的身影
- 哈希表:这道题目我做过?
- 哈希表:解决了两数之和,那么能解决三数之和么?
- 双指针法:一样的道理,能解决四数之和
- 哈希表:总结篇!(每逢总结必经典)
字符串
- 字符串:这道题目,使用库函数一行代码搞定
- 字符串:简单的反转还不够!
- 字符串:替换空格
- 字符串:花式反转还不够!
- 字符串:反转个字符串还有这个用处?
- 帮你把KMP算法学个通透!(理论篇)B站视频
- 帮你把KMP算法学个通透!(代码篇)B站视频
- 字符串:都来看看KMP的看家本领!
- 字符串:KMP算法还能干这个!
- 字符串:前缀表不右移,难道就写不出KMP了?
- 字符串:总结篇!
双指针法
双指针法基本都是应用在数组,字符串与链表的题目上
- 数组:就移除个元素很难么?
- 字符串:这道题目,使用库函数一行代码搞定
- 字符串:替换空格
- 字符串:花式反转还不够!
- 链表:听说过两天反转链表又写不出来了?
- 链表:环找到了,那入口呢?
- 哈希表:解决了两数之和,那么能解决三数之和么?
- 双指针法:一样的道理,能解决四数之和
- 双指针法:总结篇!
栈与队列
- 栈与队列:来看看栈和队列不为人知的一面
- 栈与队列:我用栈来实现队列怎么样?
- 栈与队列:用队列实现栈还有点别扭
- 栈与队列:系统中处处都是栈的应用
- 栈与队列:匹配问题都是栈的强项
- 栈与队列:有没有想过计算机是如何处理表达式的?
- 栈与队列:滑动窗口里求最大值引出一个重要数据结构
- 栈与队列:求前 K 个高频元素和队列有啥关系?
- 栈与队列:总结篇!
二叉树
题目分类大纲如下:
- 关于二叉树,你该了解这些!
- 二叉树:一入递归深似海,从此offer是路人
- 二叉树:听说递归能做的,栈也能做!
- 二叉树:前中后序迭代方式的写法就不能统一一下么?
- 二叉树:层序遍历登场!
- 二叉树:你真的会翻转二叉树么?
- 本周小结!(二叉树)
- 二叉树:我对称么?
- 二叉树:看看这些树的最大深度
- 二叉树:看看这些树的最小深度
- 二叉树:我有多少个节点?
- 二叉树:我平衡么?
- 二叉树:找我的所有路径?
- 还在玩耍的你,该总结啦!(本周小结之二叉树)
- 二叉树:以为使用了递归,其实还隐藏着回溯
- 二叉树:做了这么多题目了,我的左叶子之和是多少?
- 二叉树:我的左下角的值是多少?
- 二叉树:递归函数究竟什么时候需要返回值,什么时候不要返回值?
- 二叉树:构造二叉树登场!
- 二叉树:构造一棵最大的二叉树
- 本周小结!(二叉树系列三)
- 二叉树:合并两个二叉树
- 二叉树:二叉搜索树登场!
- 二叉树:我是不是一棵二叉搜索树
- 二叉树:搜索树的最小绝对差
- 二叉树:我的众数是多少?
- 二叉树:公共祖先问题
- 本周小结!(二叉树系列四)
- 二叉树:搜索树的公共祖先问题
- 二叉树:搜索树中的插入操作
- 二叉树:搜索树中的删除操作
- 二叉树:修剪一棵搜索树
- 二叉树:构造一棵搜索树
- 二叉树:搜索树转成累加树
- 二叉树:总结篇!(需要掌握的二叉树技能都在这里了)
回溯算法
题目分类大纲如下:
- 关于回溯算法,你该了解这些!
- 回溯算法:求组合问题!
- 回溯算法:组合问题再剪剪枝
- 回溯算法:求组合总和!
- 回溯算法:电话号码的字母组合
- 本周小结!(回溯算法系列一)
- 回溯算法:求组合总和(二)
- 回溯算法:求组合总和(三)
- 回溯算法:分割回文串
- 回溯算法:复原IP地址
- 回溯算法:求子集问题!
- 本周小结!(回溯算法系列二)
- 回溯算法:求子集问题(二)
- 回溯算法:递增子序列
- 回溯算法:排列问题!
- 回溯算法:排列问题(二)
- 本周小结!(回溯算法系列三)
- 本周小结!(回溯算法系列三)续集
- 视频来了!!带你学透回溯算法(理论篇)
- 视频来了!!回溯算法(力扣题目:77.组合)
- 视频来了!!回溯算法剪枝操作(力扣题目:77.组合)
- 视频来了!!回溯算法(力扣题目:39.组合总和)
- 回溯算法:重新安排行程
- 回溯算法:N皇后问题
- 回溯算法:解数独
- 一篇总结带你彻底搞透回溯算法!
贪心算法
题目分类大纲如下:
- 关于贪心算法,你该了解这些!
- 贪心算法:分发饼干
- 贪心算法:摆动序列
- 贪心算法:最大子序和
- 本周小结!(贪心算法系列一)
- 贪心算法:买卖股票的最佳时机II
- 贪心算法:跳跃游戏
- 贪心算法:跳跃游戏II
- 贪心算法:K次取反后最大化的数组和
- 本周小结!(贪心算法系列二)
- 贪心算法:加油站
- 贪心算法:分发糖果
- 贪心算法:柠檬水找零
- 贪心算法:根据身高重建队列
- 本周小结!(贪心算法系列三)
- 贪心算法:根据身高重建队列(续集)
- 贪心算法:用最少数量的箭引爆气球
- 贪心算法:无重叠区间
- 贪心算法:划分字母区间
- 贪心算法:合并区间
- 本周小结!(贪心算法系列四)
- 贪心算法:单调递增的数字
- 贪心算法:买卖股票的最佳时机含手续费
- 贪心算法:我要监控二叉树!
- 贪心算法:总结篇!(每逢总结必经典)
动态规划
动态规划专题已经开始啦,来不及解释了,小伙伴们上车别掉队!
- 关于动态规划,你该了解这些!
- 动态规划:斐波那契数
- 动态规划:爬楼梯
- 动态规划:使用最小花费爬楼梯
- 本周小结!(动态规划系列一)
- 动态规划:不同路径
- 动态规划:不同路径还不够,要有障碍!
- 动态规划:整数拆分,你要怎么拆?
- 动态规划:不同的二叉搜索树
- 本周小结!(动态规划系列二)
背包问题系列:
- 动态规划:关于01背包问题,你该了解这些!
- 动态规划:关于01背包问题,你该了解这些!(滚动数组)
- 动态规划:分割等和子集可以用01背包!
- 动态规划:最后一块石头的重量 II
- 本周小结!(动态规划系列三)
- 动态规划:目标和!
- 动态规划:一和零!
- 动态规划:关于完全背包,你该了解这些!
- 动态规划:给你一些零钱,你要怎么凑?
- 本周小结!(动态规划系列四)
- 动态规划:Carl称它为排列总和!
- 动态规划:以前我没得选,现在我选择再爬一次!
- 动态规划: 给我个机会,我再兑换一次零钱
- 动态规划:一样的套路,再求一次完全平方数
- 本周小结!(动态规划系列五)
- 动态规划:单词拆分
- 动态规划:关于多重背包,你该了解这些!
- 听说背包问题很难? 这篇总结篇来拯救你了
打家劫舍系列:
股票系列:
- 动态规划:买卖股票的最佳时机
- 动态规划:本周我们都讲了这些(系列六)
- 动态规划:买卖股票的最佳时机II
- 动态规划:买卖股票的最佳时机III
- 动态规划:买卖股票的最佳时机IV
- 动态规划:最佳买卖股票时机含冷冻期
- 动态规划:本周我们都讲了这些(系列七)
- 动态规划:买卖股票的最佳时机含手续费
子序列系列:
(持续更新中....)
图论
十大排序
数论
高级数据结构经典题目
- 并查集
- 最小生成树
- 线段树
- 树状数组
- 字典树
海量数据处理
算法模板
关于作者
大家好,我是程序员Carl,哈工大师兄,ACM 校赛、黑龙江省赛、东北四省赛金牌、亚洲区域赛铜牌获得者,先后在腾讯和百度从事后端技术研发,CSDN博客专家。对算法和C++后端技术有一定的见解,利用工作之余重新刷leetcode。
加我的微信,备注:「个人简单介绍」+「组队刷题」, 拉你进刷题群,每天一道经典题目分析,而且题目不是孤立的,每一道题目之间都是有关系的,都是由浅入深一脉相承的,所以学习效果最好是每篇连续着看,也许之前你会某些知识点,但是一直没有把知识点串起来,这里每天一篇文章就会帮你把知识点串起来。
也欢迎找我交流,加微信备注:「个人简单介绍」 + 交流
我的公众号
更多精彩文章持续更新,微信搜索:「代码随想录」第一时间围观,关注后回复:「666」可以获得所有算法专题原创PDF。
每天8:35准时为你推送一篇经典面试题目,帮你梳理算法知识体系,轻松学习算法!,并且公众号里有大量学习资源,也有我自己的学习心得和方法总结,更有上万录友们在这里打卡学习,来看看就你知道了,一定会发现相见恨晚!
面试攻略
来到这里的录友一般都是为了面试找工作,其实从就业方向到如何准备,从面试技巧到如何选择offer,从入职到职场规则,对于新人来说都有太多的坑。
所以每天都有很多录友向我问各方面的问题,随便回答一下吧其实不太好,如果不回答也不太好,都仔细回答呢是真的回答不过来了。
而微信群有难免鱼龙混杂,问题和回答的质量都得不到保证,而且一些关键问答经常就被淹没了。
所以再三考虑,我决定建立这个知识星球,相当于是一个比价私密的小圈子,也可以沉淀有价值的问答内容,更好地帮助录友们提升自己。
付费星球价格最低是50元,处于对自己内容的自信也不能可最低的来,哈哈哈,所以就定价66元,后序就会涨价了,哈哈哈,关键是大家来到这里一定会感受到物超所值,我也会花费更多的时间在这个星球上,星球里将提供这些:
- 如何准备面试,面试技巧,如何选择offer,以及职场规则 都能得到我1v1的指导和建议。
- 简历修改(简历发动送邮箱carl.sun@qq.com,标题备注来自星球)
- 分享算法知识、各种编程技巧、学习方法、个人心得、如何规划时间,甚至是如何锻炼健身等等。
- 各个大厂面试内推渠道在这里实时发布。
- 认识更多的大厂牛人,我会陆续邀请我的同学朋友们来这里做技术分享。
先扫码来看看吧,我已经在星球里详细回答了很多录友的问题,这些问题对你可能也很有帮助,付费之后如果不满意三天内在APP里可以申请全额退款!