Leetcode题目分类指南(单独刷题或学习算法书籍配合使用)
Leetcode题目分类指南
笔者在学习《算法导论》同时,希望能够配合Leetcode的题目进行分类模块化练习,该分类为笔者自己根据做题学习经验,结合《算法导论》的内容,给出Leetcode题目分类。题目主要集中在Leetcode的前400题中,也包括有后面的一些经典值得刷的题。该题目分类按照算法和数据结构排版,即可供单独Leetcode刷题使用,也可以配合学习《算法导论》或者其他算法书籍(前三章题目分类的排版也考虑了算法第4版的顺序)当作编程练习使用,以便加深对数据结构和算法设计分析的理解。
后期我会慢慢将题目的代码和题解按照分类的顺序更新出来,同时《算法导论》书中每章的算法也会用代码实现,关于算导的代码实现见我的博客。
正文中每个题目名字前面的数字是题目在leetcode中的序号,后面是该题目的一些备注。
该题目分类word版资源见资源链接。
目录
1 基本数据结构
1.1数组
1.1.1 基础
1.1.2 提高
1.1.3 区间问题(Interval)
1.1.4 Counter
1.1.5 CounterII
1.2 链表
1.2.1 基础
1.2.2 提高
1.3 栈
1.4 优先队列
1.5 堆
1.5.1 Easy
1.5.2 Medium
1.5.3 Hard
1.6 树
1.6.1基础
1.6.2 Preorder先序遍历
1.6.3 Preorder先序遍历II
1.6.4 BFS深度搜索
1.6.5 BST二叉查找树
1.6.6 重要程度
2 排序
3 查找
3.1 哈希表
3.1.1 Easy
3.1.2 Medium
3.1.3 Hard
3.2 二分查找
3.3 二叉搜索树
3.4 红黑树
3.5 并查集
4 高级设计和分析技术
4.1 动态规划
4.1.1 一维
4.1.2 二维
4.1.3 化简
4.1.4 其他高频经典题
4.2 贪心算法
4.3 回溯
4.4 分治和递归
4.4.1 分治
4.4.2递归
5 图算法
5.1 图
5.1.1 Easy
5.1.2 Medium
5.1.3 Hard
5.1.4 必做
5.2 DFS 和 BFS
5.4 拓扑排序
6 字符串问题(String)
6.1 基础
6.2 提高
6.3 子字符串Substring
6.4 回文(Palindrome)
6.5 括号问题(Parentheses)
6.6 子序列Subsequence
7 数学问题(Math)
7.1基础
7.2 求和问题
7.3很少考
8 矩阵问题(Matrix)
9 随机化算法
9.1 等概率抽样
9.2 蓄水池抽样
9.3 其他
10 设计题(Design)
11 位运算(Bit Manipulation)
11 高级数据结构
11.1 特殊树
11.1.1字典树(Trie,或前缀树,单词查找树)
11.1.2 线段树(Segment Tree)
11.1.3 树状数组(Binary_Index_Tree)
12 其他问题
12.1 记忆化
12.2极小化极大
12.3 计算几何学
12.3.1 扫描线算法(Sweep Line Algorithm)
12.3.2 几何
1 基本数据结构
1.1数组
1.1.1 基础
27 移除元素
26 删除排序数组中的重复项
80 删除排序数组中的重复项 II
277 搜寻名人
189 旋转数组
41 缺失的第一个正数
299 猜数字游戏
134 加油站
118 杨辉三角 很少考
119 杨辉三角2 很少考
169 多数元素 很少考
229 多数元素2 很少考
274 H指数
275 H指数2 Binary Search
243 最短单词距离
244 最短单词距离2
245 最短单词距离3
217 存在重复元素
219 存在重复元素2 很少考
220 存在重复元素3 很少考
55 跳跃游戏
45 跳跃游戏2
121 买卖股票的最佳时机
122 买卖股票的最佳时机2
123 买卖股票的最佳时机3
188 买卖股票的最佳时机4
309 最佳买卖股票时机含冷冻期
11 盛最多水的容器
42 接雨水
334 递增的三元子序列
128 最长连续子序列
164 最大间距 桶Bucket
287 寻找重复数
135 分发糖果 很少考
330 按要求补齐数组 很少考
1.1.2 提高
4 寻找两个有序数组的中位数 很少考
321 拼接最大数 很少考
327 区间和的个数
289 生命游戏
1.1.3 区间问题(Interval)
57 插入区间
56 合并区间
252 会议室
253 会议室2
352 将数据流变为多个不相交区间 TreeMap
1.1.4 Counter
239 滑动窗口最大值
295 数据流的中位数
53 最大子序和
325 和等于k的最长子数组长度
209 长度最小的子数组
238 除自身以外数组的乘积
152 乘积最大子序列
228 汇总区间
163 缺失的区间
1.1.5 Counter
88 合并两个有序数组
75 颜色分类
283 移动零
376 摆动序列
280 摆动排序
324 摆动排序1
278 第一个错误的版本
35 搜索插入位置
33 搜索旋转排序数组
81 搜索旋转排序数组2
153 搜索旋转排序数组中的最小值
154 搜索旋转排序数组中的最小值2
162 寻找峰值
374 猜数字大小
34 在排序数组中查找元素的第一个和最后一个位置
349 两个数组的交集
350 两个数组的交集2
315 计算右侧小于当前元素的个数
300 最长上升子序列
354 俄罗斯套娃信封问题
1.2 链表
1.2.1 基础
206 反转链表
141 环形链表
24 两两交换链表中的节点
328 奇偶链表
92 反转链表2
237 删除链表中的节点
19 删除链表的倒数第N个结点
83 删除排序链表中的重复元素
203 移除链表元素
82 删除排序链表中的重复元素2
369 给单链表加1
2 两数相加
160 相交链表
21 合并两个有序链表
1.2.2 提高
234 回文链表
143 重排链表
142 环形链表 II
148 排序链表
25 K个一组反转链表
61 旋转链表
86 分隔链表
23 合并K个排序链表
147 对链表进行插入排序
1.3 栈
155 最小栈
232 用栈实现队列
225 用队列实现栈
150 逆波兰表达式求值
71 简化路径
388 文件的最长绝对路径
394 字符串解码
224 基本计算器
227 基本计算器2
385 迷你语法分析器
84 柱状图中最大的矩形
20 有效的括号
94 二叉树的中序遍历
42 接雨水
1.4 优先队列
215 数组中的第K个最大元素
347 前 K 个高频元素
313 超级丑数 很少考
373 查找和最小的K对数字 很少考
218 天际线问题
332 重新安排行程
341 扁平化嵌套列表迭代器
1.5 堆
1.5.1 Easy
703 数据流中的第K大元素
1.5.2 Medium
378 有序矩阵中第K小的元素
215 数组中的第K个最大元素
743 网络延迟时间
347 前K个高频元素
1.5.3 Hard
882 细分图中的可到达结点
23 合并K个排序链表
864 获取所有钥匙的最短路径
407 接雨水 II
218 天际线问题
871 最低加油次数
786 第K个最小的素数分数
239 滑动窗口最大值
295 数据流的中位数
1.6 树
1.6.1基础
144 二叉树的前序遍历
94 二叉树的中序遍历
145 二叉树的后序遍历
102 二叉树的层次遍历
543 二叉树的直径
1.6.2 Preorder先序遍历
100 相同的树
101 对称二叉树
226 翻转二叉树 preorder + BFS
257 二叉树的所有路径
112 路径总和
113 路径总和2
129 求根到叶子节点数字之和
298 二叉树最长连续序列
111 二叉树的最小深度
1.6.3 Preorder先序遍历
104 二叉树的最大深度
110 平衡二叉树
124 二叉树中的最大路径和
250 统计同值子树
366 寻找完全二叉树的叶子节点
337 打家劫舍 III postorder + preorder
1.6.4 BFS深度搜索
107 二叉树的层次遍历2
103 二叉树的锯齿形层次遍历
199 二叉树的右视图 BFS + preorder
1.6.5 BST二叉查找树
98 验证二叉搜索树 preorder
235 二叉搜索树的最近公共祖先 preorder
236 二叉树的最近公共祖先 postorder
108 将有序数组转换为二叉搜索树 binary search
109 有序链表转换二叉搜索树 binary search
173 二叉搜索树迭代器 inorder
230 二叉搜索树中第K小的元素 inorder
297 二叉树的序列化与反序列化 BFS
285 二叉搜索树中的顺序后继 inorder
270 最接近的二叉搜索树值 preorder
272 最接近的二叉搜索树值2 inorder
99 恢复二叉搜索树 inorder
1.6.6 重要程度
156 上下翻转二叉树 很少考
114 二叉树展开为链表 很少考
255 验证前序遍历序列二叉搜索树 很少考
333 最大BST子树 很少考
222 完全二叉树的节点个数 很少考
105 从前序与中序遍历序列构造二叉树 很少考
106 从中序与后序遍历序列构造二叉树 很少考
116 填充每个节点的下一个右侧节点指针 重要
117 填充每个节点的下一个右侧节点指针2 重要
314 二叉树的垂直遍历 重要
96 不同的二叉搜索树 重要
95 不同的二叉搜索树2 很少考
331 验证二叉树的前序序列化 很少考
2 排序
350 两个数组的交集 II
349 两个数组的交集
1122 数组的相对排序
179 最大数
148 排序链表
56 合并区间
853 车队
147 对链表进行插入排序
253 会议室 II
280 摆动排序
220 存在重复元素 III
1183 矩阵中1 的最大数量
327 区间和的个数
527 单词缩写
493 翻转对
164 最大间距
710 黑名单中的随机数
57 插入区间
315 计算右侧小于当前元素的个数
3 查找
3.1 哈希表
3.1.1 Easy
1 两数之和
202 快乐数
204 计数质数
359 日志速率限制器
463 岛屿的周长
136 只出现一次的数字
447 回旋镖的数量
350 两个数组的交集 II
387 字符串中的第一个唯一字符
290 单词规律
349 两个数组的交集
409 最长回文串
3.1.2 Medium
3 无重复字符的最长子串
718 最长重复子数组
535 TinyURL的加密与解密
974 和可被 K 整除的子数组
939 最小面积矩形
676 实现一个魔法字典
560 和为K的子数组
554 砖墙
94 二叉树的中序遍历
138 复制带随机指针的链表
347 前 K 个高频元素
18 四数之和
325 和等于 k 的最长子数组长度
525 连续数组
648 单词替换
187 重复的DNA序列
3.1.3 Hard
149 直线上最多的点数
85 最大矩形
1044 最长重复子串
711 不同岛屿的数量 II
726 原子的数量
76 最小覆盖子串
632 最小区间
336 回文对
381 O(1) 时间插入、删除和获取随机元素 - 允许重复
30 串联所有单词的子串
992 K 个不同整数的子数组
710 黑名单中的随机数
340 至多包含 K 个不同字符的最长子串
3.2 二分查找
278 第一个错误的版本
35 搜索插入位置
33 搜索旋转排序数组
81 搜索旋转排序数组2
153 寻找旋转排序数组中的最小值
154 寻找旋转排序数组中的最小值2
162 寻找峰值
374 猜数字大小
34 在排序数组中查找元素的第一个和最后一个位置
349 两个数组的交集
350 两个数组的交集2
315 计算右侧小于当前元素的个数
300 最长上升子序列
354 俄罗斯套娃信封问题
378 有序矩阵中第K小的元素
718 最长重复子数组
911 在线选举
658 找到 K 个最接近的元素
668 乘法表中第k小的数
410 分割数组的最大值
3.3 二叉搜索树
98 验证二叉搜索树 preorder
235 二叉搜索树的最近公共祖先 preorder
236 二叉树的最近公共祖先 postorder
108 将有序数组转换为二叉搜索树 binary search
109 有序链表转换二叉搜索树 binary search
173 二叉搜索树迭代器 inorder
230 二叉搜索树中第K小的元素 inorder
297 二叉树的序列化与反序列化 BFS
285 二叉搜索树中的顺序后继 inorder
270 最接近的二叉搜索树值 preorder
272 最接近的二叉搜索树值2 inorder
99 恢复二叉搜索树 inorder
3.4 红黑树
110 平衡二叉树
3.5 并查集
261 以图判树
323 无向图中连通分量的数目
200 岛屿数量
305 岛屿数量2
547 朋友圈
4 高级设计和分析技术
4.1 动态规划
4.1.1 一维
70 爬楼梯
62 不同路径
63 不同路径2
120 三角形最小路径和 很少考
279 完全平方数
139 单词拆分
375 猜数字大小2
312 戳气球
322 零钱兑换
4.1.2 二维
4.1.3 化简
4.1.4 其他高频经典题
4.2 贪心算法
4.3 回溯
4.4 分治和递归
4.4.1 分治
4.4.2递归
5 图算法
5.1 图
5.1.1 Easy
5.1.2 Medium
5.1.3 Hard
5.1.4 必做
5.2 DFS 和 BFS
5.4 拓扑排序
6 字符串问题(String)
6.1 基础
6.2 提高
6.3 子字符串Substring
340 至多包含 K 个不同字符的最长子串 Sliding Window
395 至少有K个重复字符的最长子串 Sliding Window
159 至多包含两个不同字符的最长子串 Sliding Window
6.4 回文(Palindrome)
6.5 括号问题(Parentheses)
6.6 子序列Subsequence
7 数学问题(Math)
7.1基础
7.2 求和问题
167 Two Sum II - Input array is sorted
7.3很少考
8 矩阵问题(Matrix)
9 随机化算法
9.1 等概率抽样
381 138O(1) 时间插入、删除和获取随机元素 - 允许重复
9.2 蓄水池抽样
9.3 其他
10 设计题(Design)
11 位运算(Bit Manipulation)
11 高级数据结构
11.1 特殊树
11.1.1字典树(Trie,或前缀树,单词查找树)
11.1.2 线段树(Segment Tree)
11.1.3 树状数组(Binary_Index_Tree)
12 其他问题
12.1 记忆化
12.2极小化极大
12.3 计算几何学
12.3.1 扫描线算法(Sweep Line Algorithm)
12.3.2 几何
Leetcode题目分类指南(单独刷题或学习算法书籍配合使用)相关推荐
- LeetCode刷题笔记(算法思想 四)
LeetCode刷题笔记(算法思想 四) 七.动态规划 斐波那契数列 70. 爬楼梯 198. 打家劫舍 213. 打家劫舍 II 信件错排 母牛生产 矩阵路径 64. 最小路径和 62. 不同路径 ...
- Acwing LeetCode 题目分类——配套基础课进阶课
LeetCode 题目分类--配套基础课进阶课 1.基础 二分(满足一个条件的最值问题) LeetCode33 https://leetcode.com/problems/search-in-rota ...
- 力扣 (LeetCode)-对称二叉树,树|刷题打卡
Github来源:力扣 (LeetCode)|刷题打卡 | 求星星 ✨ | 给个❤️关注,❤️点赞,❤️鼓励一下作者 [已开启]任务一:刷题打卡 * 10 篇 哪吒人生信条:如果你所学的东西 处于喜欢 ...
- leetcode之DFS+BFS+DSU刷题总结2
leetcode之DFS+BFS+DSU刷题总结2 1-对称二叉树 题目链接:题目链接戳这里!!! 思路1:迭代法 一棵二叉树,左右子树分别进队,如果左右子树都为空,则结束遍历,如果左右子树仅一个为空 ...
- 刷题 BFS 广度优先算法 : 大胖子走迷宫 (python, java)
刷题 BFS 广度优先算法 : 大胖子走迷宫 (python, java) https://www.lanqiao.cn/problems/234/learning/ http://lx.lanqia ...
- LeetCode(力扣) 刷题注意事项 持续更新 ~ ~
文章目录 刷题无止境,那就让自己快乐一点 刷哪的题 抱前辈大腿 没有思路的题目 提交前检查代码 提交后 可以做的更好 在哪儿看题解 不要试图从题解的代码中理解思路 LeetCode的使用技巧 一次可以 ...
- leetcode和牛客网刷题
在上学时学过<数据结构和算法>这门课,当时学习了数组.链表.哈希表.二叉树.图等数据结构,还有排序算法.二分查找.最短路径算法.关键路径等,当时记得还有ACM比赛,还有那部很烧脑筋的< ...
- LeetCode LCP 12. 小张刷题计划(二分查找)
1. 题目 为了提高自己的代码能力,小张制定了 LeetCode 刷题计划,他选中了 LeetCode 题库中的 n 道题,编号从 0 到 n-1,并计划在 m 天内按照题目编号顺序刷完所有的题目(注 ...
- vscode中配置LeetCode插件的教程(愉快刷题)
转载于脚本之家,原链接为https://www.jb51.net/article/183720.htm 大家好,今早在B站看到up主的vscode里藏了leetcode插件,这才知道原来还有这款神器. ...
最新文章
- LeetCode每日一题:回文链表(No.234)
- js 的try catch应用
- 分布式任务队列 Celery — 深入 Task
- linux centos7 升级 make 4.0
- oracle别名用双引号,Oracle别名大小写 -----解决方案
- Pytorch超简单安装教程
- Windows MinGW配置C、C++编译环境
- LeetCode 542 01 矩阵
- MooTools 1.4 源码分析 - (关于Core、Type等模块分析)
- java invokelater 以及invokeandwait
- Java学习之路 之 类篇
- Selenium 新手入门(C#)1. 用vs运行调用Selenium打开页面
- WickedEngine 开源游戏引擎
- 犀牛6.0grasshopper翻译插件_Rhino 6.0犀牛三维建模 软件下载安装包教程(附下载方法)...
- JS代码简单一段即可破解QQ空间删除说说
- C语言,从入门到放弃
- 初学Godot笔记(二)(认真开凿版)
- 常用的接口测试工具有哪些?
- 使用科大讯飞SDK实现语音功能
- 基于go的二维码签到系统