这篇文章记忆中我在 LeetCode 上刚开始刷题的时候看到过,当时什么算法都不会完全看不懂,匆匆看完也就过去了,竟然点赞收藏都没点...「当然现在已经补上了」,以至于今天看到 @frigidwinter 的推荐回头再看到这篇帖子真的是错过了宝藏啊,所以好资料就应该好好利用起来,真的可以少走很多弯路!
一定要先去看一遍原帖,大佬可以直接跳过这一部分。
其实自己在刷题的路上也走了不少的弯路,从只会暴力到学习各种算法套路看了很多帖子和分享,也有一些自己的心得,下面简单讲一下对于初学者如何正确使用这份题单。
看完原贴之后大家能看到作者大概总结了 道题目,而且每个算法下的小分类也总结的特别细致,题量完全够应付一般的面试了,然而也正是因为题目太多了,对于初学者尤其是没有系统学习过算法的小伙伴可能很难坚持下去。
作者更新了前面几章节的讲解,写的非常好,但不足以建立知识体系,我的建议是在有一定的基础之后再跟着这个题单刷题 + 题解区的分享进行学习,进一步提高刷题量和代码熟练度。
这里推荐一个更加适合零基础的小伙伴学习的题单 代码随想录,精选了 道题左右「题量不算多」,同时每道题目都会有细致的讲解,并且在讲解题之前会先讲一下对应的知识点「足够系统」,我个人跟下来是受益颇多,同时自己边学边写题解整理成了 GitHub 仓库。当然这两份资料可以结合着看,先刷代码随想录学知识点和题目 + 作者的题单巩固练习,这一套下来题量也有 了。
我在刷代码随想录之前刷了一遍
A C W 算法基础课, 总讲的非常好,稍微有了一点算法功底,对于初学者不管看什么资料都会比较吃力,正是因为不会才去学,所以没办法硬着头皮往下看吧!
脚本作者 @尤达大师
其实就是给每个题目加了个超链接直接跳转到对应题目会方便很多,评论区有大佬给了一个脚本,我看到有不少小伙伴不会使用,这里写个小小的教程,同时更新了一下脚本。
一、首先安装 Tampermonkey 油猴脚本,下面附上教程以及下载地址:
二、创建脚本
脚本代码地址:https://pastebin.com/kUgzg1Bx,进去复制代码
添加新脚本

把刚才复制的代码粘贴进来,Ctrl + A Ctrl + V Ctrl + S,一步到位。

三、打开作者的帖子 https://leetcode.cn/circle/article/48kq9d/ 正常情况下就可以看到所有的题目标号都替换成超链接了,搞定!

进阶:如何用颜色对题目通过状态进行区分,大家可以看一下评论区~
严正声明:题目分类归作者版权所有,作者 @noone_ 的原帖:https://leetcode.cn/circle/article/48kq9d/
强烈推荐大家自己动手去搞一下方便自己更好的学习,上面应该讲得够清楚了,这里我贴一下我整理之后的结果。
最后感谢作者 @noone_ 提供的题单以及 @尤达大师 提供的方法。
文章到这里就结束了,尽自己能力做点事情,如果对你有帮助给个赞再走哇,谢谢~
| 题目分类 | 题目编号 |
|---|---|
| 数组的遍历 | 485、495、414、628 |
| 统计数组中的元素 | 645、697、448、442、41、274 |
| 数组的改变、移动 | 453、665、283 |
| 二维数组及滚动数组 | 118、119、661、598、419 |
| 数组的旋转 | 189、396 |
| 特定顺序遍历二维数组 | 54、59、498 |
| 二维数组变换 | 566、48、73、289 |
| 前缀和数组 | 303、304、238 |
| 题解 | 数组篇 |
| 题目分类 | 题目编号 |
|---|---|
| 字符 | 520 |
| 回文串的定义 | 125 |
| 公共前缀 | 14 |
| 单词 | 434、58 |
| 字符串的反转 | 344、541、557、151 |
| 字符的统计 | 387、389、383、242、49、451、423、657、551、696、467、535 |
| 数字与字符串间转换 | 299、412、506、539、553、537、592、640、38、443、8、13、12、273、165、481 |
| 子序列 | 392、524、521、522 |
| 高精度运算 | 66、67、415、43、306 |
| 字符串变换 | 482、6、68 |
| 字符串匹配 | 28、686、459、214 |
| 中心拓展法 | 5、647 |
| 题目分类 | 题目编号 |
|---|---|
| 数字的位操作 | 7、9、479、564、231、342、326、504、263、190、191、476、461、477、693、393、172、458、258、319、405、171、168、670、233、357、400 |
| 简单数学题 | 492、29、507 |
| 快速幂 | 50、372 |
| 题目分类 | 题目编号 |
|---|---|
| 用栈访问最后若干元素 | 682、71、388 |
| 栈与计算器 | 150、227、224 |
| 栈与括号匹配 | 20、636、591、32 |
| 递归 | 385、341、394 |
| 题目分类 | 题目编号 |
|---|---|
| 链表的删除 | 203、237、19 |
| 链表的遍历 | 430 |
| 链表的旋转与反转 | 61、24、206、92、25 |
| 链表高精度加法 | 2、445 |
| 链表的合并 | 21、23 |
| 题目分类 | 题目编号 |
|---|---|
| 哈希表的查找、插入及删除 | 217、633、349、128、202、500、290、532、205、166、466、138 |
| 哈希表与索引 | 1、167、599、219、220 |
| 哈希表与统计 | 594、350、554、609、454、18 |
| 哈希表与前缀和 | 560、523、525 |
| 题目分类 | 题目编号 |
|---|---|
| 数组与贪心算法 | 605、121、122、561、455、575、135、409、621、179、56、57、228、452、435、646、406、48、169、215、75、324、517、649、678、420 |
| 子数组与贪心算法 | 53、134、581、152 |
| 子序列与贪心算法 | 334、376、659 |
| 数字与贪心 | 343 |
| 单调栈法 | 496、503、456、316、402、321、84、85 |
| 题目分类 | 题目编号 |
|---|---|
| 头尾指针 | 345、680、167、15、16、18、11、42 |
| 同向双指针、滑动窗口 | 27、26、80、83、82、611、187、643、674、209、3、438、567、424、76、30 |
| 分段双指针 | 86、328、160、88、475 |
| 快慢指针 | 141、142、143、234、457、287 |
| 题目分类 | 题目编号 |
|---|---|
| 树与递归 | 100、222、101、226、437、563、617、508、572、543、654、687、87 |
| 树的层次遍历 | 102、429、690、559、662、671、513、515、637、103、107、257、623、653、104、111、112、113、129、404、199、655、116、117 |
| 树的前序遍历 | 144、589 |
| 树的前序序列化 | 606、331、652、297、449 |
| 树的后序遍历 | 145、590 |
| 树的中序遍历与二叉搜索树 | 94、700、530、538、230、98、173、669、450、110、95、108、109 |
| 重构二叉树 | 105、106 |
| 二叉树的展开 | 114 |
| 最近公共祖先 | 235、236 |
| Morris中序遍历 | 501、99 |
| 四叉树 | 558、427 |
| 题目分类 | 题目编号 |
|---|---|
| 图的建立与应用 | 565 |
| 深度优先搜索 | 17、397 |
| 回溯法 | 526、401、36、37、51、52、77、39、216、40、46、47、31、556、60、491、78、90、79、93、332 |
| 回溯法与表达式 | 241、282、679 |
| 回溯法与括号 | 22、301 |
| 回溯法与贪心 | 488 |
| 广度优先搜索 | 133、200、695、463、542、130、417、529、127、126、433、675 |
| 并查集 | 547、684、685 |
| 拓扑排序 | 399、207、210 |
| 有限状态自动机 | 65、468 |
| 题目分类 | 题目编号 |
|---|---|
| 二分查找应用(简单) | 374、35、278、367、69、441 |
| 二分查找应用(中等) | 34、540、275、436、300、354、658、162、4 |
| 二分查找与旋转数组 | 153、154、33、81 |
| 二分查找与矩阵 | 74、240 |
| 二分答案法 | 378、668、410、483 |
| 题目分类 | 题目编号 |
|---|---|
| 异或的应用 | 89、136、137、260、268 |
| 与或非的应用 | 371、318、201 |
| 题目分类 | 题目编号 |
|---|---|
| 数组中的动态规划 | 509、70、338、45、55、198、213、650、91、639、552、123、188、309、32、264、313、403 |
| 子数组、子序列中的动态规划 | 689、413、446、368、416、279 |
| 背包问题 | 322、518、474、494、377 |
| 矩阵中的动态规划 | 62、63、64、120、576、688、221、629、174、96、329 |
| 动态规划与字符串匹配 | 583、72、97、115、516、132、131、139、140、514、10、44 |
| 状态压缩动态规划 | 464、691、698、638、473 |
| 区间中的动态规划 | 486、664、375、312、546 |
| 树形dp | 337、124 |
| 数位dp | 233、600 |
| 题目分类 | 题目编号 |
|---|---|
| 数据结构设计——栈与队列 | 225、232、284、622、641、155 |
| 数据结构设计——哈希表 | 676、355、380、381 |
| 数据结构设计——哈希与双向链表 | 432、146、460 |
| 前缀树 | 208、211、648、386、677、472、421、212、336、440 |
| 堆 | 23、373、378、632、347、692、502、630、407、295、480 |
| 树状数组 | 307、315、493、327、673 |
| 线段树 | 699 |
| 平衡树(set/map) | 352、218、363 |
| 题目分类 | 题目编号 |
|---|---|
| 按权值采样 | 528、497 |
| 蓄水池抽样 | 382、398 |
| 拒绝采样 | 470、478、519 |
| 题目分类 | 题目编号 |
|---|---|
| 计算几何基础 | 593、447、223、149 |
| 分类讨论法 | 335 |
| 凸包 | 587 |
| 覆盖问题 | 391 |
| 题目分类 | 题目编号 |
|---|---|
| 博弈论 | 292 |
| 分块 | 239、164 |
| 倍增法 | 330 |
| 拓展欧几里得算法 | 365 |
| 洗牌算法 | 384 |
| 找规律 | 390、672 |
| 分治法 | 395、667 |
| 排序算法 | 147、148 |
| 线性筛 | 204 |
| 摩尔投票法 | 229 |
End!