Skip to content

Latest commit

 

History

History
964 lines (812 loc) · 157 KB

05.Categories-List.md

File metadata and controls

964 lines (812 loc) · 157 KB

LeetCode 题解(按分类排序,推荐刷题列表 ★★★)

01. 数组

数组基础题目

数组操作题目

题号 标题 题解 标签 难度
0189 轮转数组 Python 数组 中等
0066 加一 Python 数组 简单
0724 寻找数组的中心下标 Python 数组 简单
0485 最大连续 1 的个数 Python 数组 简单
0238 除自身以外数组的乘积 Python 数组 中等

二维数组题目

题号 标题 题解 标签 难度
0498 对角线遍历 Python 数组、矩阵、模拟 中等
0048 旋转图像 Python 数组 中等
0118 杨辉三角 Python 数组 简单
0119 杨辉三角 II Python 数组 简单
0073 矩阵置零 Python 数组 中等
0054 螺旋矩阵 Python 数组 中等
0059 螺旋矩阵 II Python 数组、矩阵、模拟 中等
0289 生命游戏 Python 数组、矩阵、模拟 中等

排序算法题目

冒泡排序题目

题号 标题 题解 标签 难度
剑指 Offer 45 把数组排成最小的数 Python 贪心、字符串、排序 中等
0283 移动零 Python 数组、双指针 简单

选择排序题目

题号 标题 题解 标签 难度
0215 数组中的第K个最大元素 Python 数组、堆排序 中等

插入排序题目

题号 标题 题解 标签 难度
0075 颜色分类 Python 数组、排序、双指针 中等

希尔排序题目

题号 标题 题解 标签 难度
0912 排序数组 Python 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列) 中等
0506 相对名次 Python 数组、排序、堆(优先队列) 简单

归并排序题目

题号 标题 题解 标签 难度
0912 排序数组 Python 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列) 中等
0088 合并两个有序数组 Python 数组、双指针 简单
剑指 Offer 51 数组中的逆序对 Python 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 困难
0315 计算右侧小于当前元素的个数 Python 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 困难

快速排序题目

题号 标题 题解 标签 难度
0912 排序数组 Python 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列) 中等
0169 多数元素 Python 数组、哈希表 简单

堆排序题目

题号 标题 题解 标签 难度
0912 排序数组 Python 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列) 中等
0215 数组中的第K个最大元素 Python 数组、堆排序 中等
剑指 Offer 40 最小的k个数 Python 数组、分治、快速选择、排序、堆(优先队列) 简单

计数排序题目

题号 标题 题解 标签 难度
0912 排序数组 Python 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列) 中等
1122 数组的相对排序 Python 数组、哈希表、计数排序、排序 简单

桶排序题目

题号 标题 题解 标签 难度
0912 排序数组 Python 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列) 中等
0220 存在重复元素 III Python 排序、有序集合、哈希表 中等
0164 最大间距 Python 数组、桶排序、基数排序、排序 困难

基数排序题目

题号 标题 题解 标签 难度
0164 最大间距 Python 数组、桶排序、基数排序、排序 困难
0561 数组拆分 Python 数组 简单

其他排序题目

题号 标题 题解 标签 难度
0217 存在重复元素 Python 数组、哈希表 简单
0136 只出现一次的数字 Python 位运算、数组 简单
0056 合并区间 Python 数组、排序 中等
0179 最大数 Python 贪心、字符串、排序 中等
0384 打乱数组 Python 数组、数学、随机化 中等
剑指 Offer 45 把数组排成最小的数 Python 贪心、字符串、排序 中等

二分查找题目

二分下标题目

题号 标题 题解 标签 难度
0704 二分查找 Python 二分查找 简单
0374 猜数字大小 Python 二分查找 简单
0035 搜索插入位置 Python 数组、二分查找 简单
0034 在排序数组中查找元素的第一个和最后一个位置 Python 数组、二分查找 中等
0167 两数之和 II - 输入有序数组 Python 数组、双指针、二分查找 简单
0153 寻找旋转排序数组中的最小值 Python 数组、二分查找 中等
0154 寻找旋转排序数组中的最小值 II Python 数组、二分查找 困难
0033 搜索旋转排序数组 Python 数组、二分查找 中等
0081 搜索旋转排序数组 II Python 数组、二分查找 中等
0278 第一个错误的版本 Python 数组、二分查找 简单
0162 寻找峰值 Python 数组、二分查找 中等
0852 山脉数组的峰顶索引 Python 数组、二分查找 简单
1095 山脉数组中查找目标值 Python 数组、二分查找、交互 困难
0744 寻找比目标字母大的最小字母 Python 二分查找 简单
0004 寻找两个正序数组的中位数 Python 数组、二分查找、分治算法 困难
0074 搜索二维矩阵 Python 数组、二分查找、矩阵 中等
0240 搜索二维矩阵 II Python 二分查找、分治算法 中等

二分答案题目

题号 标题 题解 标签 难度
0069 x 的平方根 Python 数学、二分查找 简单
0287 寻找重复数 Python 数组、双指针、二分查找 中等
0050 Pow(x, n) Python 数学、二分查找 中等
0367 有效的完全平方数 Python 数学、二分查找 简单
1300 转变数组后最接近目标值的数组和 Python 数组、二分查找、排序 中等
0400 第 N 位数字 Python 数学、二分查找 中等

复杂的二分查找问题

题号 标题 题解 标签 难度
0875 爱吃香蕉的珂珂 Python 数组、二分查找 中等
0410 分割数组的最大值 Python 二分查找、动态规划 困难
0209 长度最小的子数组 Python 数组、双指针、二分查找 中等
0658 找到 K 个最接近的元素 Python 二分查找 中等
0270 最接近的二叉搜索树值 Python 树、二分查找 简单
0702 搜索长度未知的有序数组 Python 二分查找 中等
0349 两个数组的交集 Python 数组、哈希表 简单
0350 两个数组的交集 II Python 数组、哈希表 简单
0287 寻找重复数 Python 数组、双指针、二分查找 中等
0719 找出第 k 小的距离对 Python 堆、数组、二分查找 困难
0259 较小的三数之和 Python 数组、双指针、二分查找、排序 中等
1011 在 D 天内送达包裹的能力 Python 数组、二分查找 中等
1482 制作 m 束花所需的最少天数 Python 数组、二分查找 中等

双指针题目

对撞指针题目

题号 标题 题解 标签 难度
0167 两数之和 II - 输入有序数组 Python 数组、双指针、二分查找 简单
0344 反转字符串 Python 字符串 简单
0345 反转字符串中的元音字母 Python 字符串 简单
0125 验证回文串 Python 字符串、双指针 简单
0011 盛最多水的容器 Python 贪心、数组、双指针 中等
0611 有效三角形的个数 Python 贪心、数组、双指针、二分查找、排序 中等
0015 三数之和 Python 数组、双指针 中等
0016 最接近的三数之和 Python 数组、双指针、排序 中等
0018 四数之和 Python 数组、哈希表、双指针 中等
0259 较小的三数之和 Python 数组、双指针、二分查找、排序 中等
0658 找到 K 个最接近的元素 Python 二分查找 中等
1099 小于 K 的两数之和 Python 数组、双指针、二分查找、排序 简单
0075 颜色分类 Python 数组、排序、双指针 中等
0360 有序转化数组 Python 数组、数学、双指针、排序 中等
0977 有序数组的平方 Python 数组、双指针、排序 简单
0881 救生艇 Python 贪心、数组、双指针、排序 中等
0042 接雨水 Python 栈、数组、双指针、动态规划、单调栈 困难
剑指 Offer 21 调整数组顺序使奇数位于偶数前面 Python 数组、双指针、排序 简单
0443 压缩字符串 Python 双指针、字符串 中等

快慢指针题目

题号 标题 题解 标签 难度
0026 删除有序数组中的重复项 Python 数组、双指针 简单
0080 删除有序数组中的重复项 II Python 数组、双指针 中等
0027 移除元素 Python 数组、双指针 简单
0283 移动零 Python 数组、双指针 简单
0845 数组中的最长山脉 Python 数组、双指针、动态规划、枚举 中等
0088 合并两个有序数组 Python 数组、双指针 简单
0719 找出第 k 小的距离对 Python 堆、数组、二分查找 困难
0334 递增的三元子序列 Python 贪心、数组 中等
0978 最长湍流子数组 Python 数组、动态规划、滑动窗口 中等

分离双指针题目

题号 标题 题解 标签 难度
0350 两个数组的交集 II Python 数组、哈希表 简单
0925 长按键入 Python 双指针、字符串 简单
0844 比较含退格的字符串 Python 栈、双指针、字符串、模拟 简单
1229 安排会议日程 Python 数组、双指针、排序 中等
0415 字符串相加 Python 字符串、大数加法 简单

滑动窗口题目

固定长度窗口题目

题号 标题 题解 标签 难度
1343 大小为 K 且平均值大于等于阈值的子数组数目 Python 数组、滑动窗口 中等
0643 子数组最大平均数 I Python 数组、滑动窗口 简单
1052 爱生气的书店老板 Python 数组、滑动窗口 中等
1423 可获得的最大点数 Python 数组、前缀和、滑动窗口 中等
1456 定长子串中元音的最大数目 Python 字符串、滑动窗口 中等
0567 字符串的排列 Python 哈希表、双指针、字符串、滑动窗口 中等
1100 长度为 K 的无重复字符子串 Python 哈希表、字符串、滑动窗口 中等
1151 最少交换次数来组合所有的 1 Python 数组、滑动窗口 中等
1176 健身计划评估 Python 数组、滑动窗口 简单
0438 找到字符串中所有字母异位词 Python 哈希表、字符串、滑动窗口 中等
0995 K 连续位的最小翻转次数 Python 位运算、数组、前缀和、滑动窗口 困难
0683 K 个关闭的灯泡 Python 树状数组、数组、有序集合、滑动窗口 困难
0220 存在重复元素 III Python 排序、有序集合、哈希表 中等
0239 滑动窗口最大值 Python 队列,数组、滑动窗口、单调队列、堆(优先队列) 困难
0480 滑动窗口中位数 Python 数组、哈希表、滑动窗口、堆(优先队列) 困难

不定长度窗口题目

题号 标题 题解 标签 难度
0674 最长连续递增序列 Python 数组 简单
0485 最大连续 1 的个数 Python 数组 简单
0487 最大连续1的个数 II Python 数组、动态规划、滑动窗口 中等
0076 最小覆盖子串 Python 哈希表、字符串、滑动窗口 困难
0718 最长重复子数组 Python 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 中等
0209 长度最小的子数组 Python 数组、双指针、二分查找 中等
0862 和至少为 K 的最短子数组
1004 最大连续1的个数 III Python 双指针、滑动窗口 中等
1658 将 x 减到 0 的最小操作数 Python 数组、哈希表、二分查找、前缀和、滑动窗口 中等
0424 替换后的最长重复字符 Python 双指针、滑动窗口 中等
0003 无重复字符的最长子串 Python 字符串、哈希表、双指针、字符串、滑动窗口 中等
1695 删除子数组的最大得分 Python 数组、哈希表、滑动窗口 中等
1208 尽可能使字符串相等 Python 字符串、二分查找、前缀和、滑动窗口 中等
1493 删掉一个元素以后全为 1 的最长子数组 Python 数组、动态规划、滑动窗口 中等
0727 最小窗口子序列 Python 字符串、动态规划、滑动窗口 困难
0159 至多包含两个不同字符的最长子串 Python 哈希表、双指针、字符串、滑动窗口 中等
0340 至多包含 K 个不同字符的最长子串 Python 哈希表、字符串、滑动窗口 中等
0795 区间子数组个数 Python 数组、双指针 中等
0992 K 个不同整数的子数组 Python 数组、哈希表、计数、滑动窗口 困难
0713 乘积小于K的子数组 Python 数组、滑动窗口 中等
0904 水果成篮 Python 数组、哈希表、滑动窗口 中等
1358 包含所有三种字符的子字符串数目 Python 哈希表、字符串、滑动数组 中等
0467 环绕字符串中唯一的子字符串 Python 字符串、动态规划 中等
1438 绝对差不超过限制的最长连续子数组 Python 队列、数组、有序集合、滑动窗口、单调队列、堆(优先队列) 中等

02. 链表

链表经典题目

题号 标题 题解 标签 难度
0707 设计链表 Python 链表 中等
0083 删除排序链表中的重复元素 Python 链表 简单
0082 删除排序链表中的重复元素 II Python 链表、双指针 中等
0206 反转链表 Python 链表 简单
0092 反转链表 II Python 链表 中等
0025 K 个一组翻转链表 Python 递归、链表 困难
0203 移除链表元素 Python 链表 简单
0328 奇偶链表 Python 链表 中等
0234 回文链表 Python 链表、双指针 简单
0430 扁平化多级双向链表 Python 链表 中等
0138 复制带随机指针的链表 Python 链表、哈希表 中等
0061 旋转链表 Python 链表、双指针 中等

链表排序题目

题号 标题 题解 标签 难度
0148 排序链表 Python 链表、双指针、分治、排序、归并排序 中等
0021 合并两个有序链表 Python 递归、链表 简单
0023 合并K个升序链表 Python 链表、分治、堆(优先队列)、归并排序 困难
0147 对链表进行插入排序 Python 链表、排序 中等

链表双指针题目

题号 标题 题解 标签 难度
0141 环形链表 Python 链表、双指针 简单
0142 环形链表 II Python 链表、双指针 中等
0160 相交链表 Python 链表、双指针 简单
0019 删除链表的倒数第 N 个结点 Python 链表、双指针 中等
0876 链表的中间结点 Python 链表、指针 简单
剑指 Offer 22 链表中倒数第k个节点 Python 链表、双指针 简单
0143 重排链表 Python 栈、递归、链表、双指针 中等
0002 两数相加 Python 递归、链表、数学 中等
0445 两数相加 II Python 栈、链表、数学 中等

03. 堆栈

堆栈基础题目

题号 标题 题解 标签 难度
1047 删除字符串中的所有相邻重复项 Python 字符串、栈 简单
0155 最小栈 Python 栈、设计 简单
0020 有效的括号 Python 栈、字符串 简单
0227 基本计算器 II Python 栈、字符串 中等
0739 每日温度 Python 栈、哈希表 中等
0150 逆波兰表达式求值 Python 中等
0232 用栈实现队列 Python 栈、设计 简单
剑指 Offer 09 用两个栈实现队列 Python 栈、设计、队列 简单
0394 字符串解码 Python 栈、深度优先搜索 中等
0032 最长有效括号
0946 验证栈序列 Python 栈、数组、模拟 中等
剑指 Offer 06 从尾到头打印链表 Python 栈、递归、链表、双指针 简单
0739 每日温度 Python 栈、哈希表 中等
0071 简化路径

单调栈

题号 标题 题解 标签 难度
0739 每日温度 Python 栈、哈希表 中等
0496 下一个更大元素 I Python 栈、数组、哈希表、单调栈 简单
0503 下一个更大元素 II Python 栈、数组、单调栈 中等
0901 股票价格跨度 Python 栈、设计、数据流、单调栈 中等
0084 柱状图中最大的矩形 Python 栈、数组、单调栈 困难
0316 去除重复字母 Python 栈、贪心、字符串、单调栈 中等
1081 不同字符的最小子序列 Python 栈、贪心、字符串、单调栈 中等
0042 接雨水 Python 栈、数组、双指针、动态规划、单调栈 困难
0085 最大矩形

04. 队列

队列基础题目

题号 标题 题解 标签 难度
0622 设计循环队列 Python 队列 中等
0346 数据流中的移动平均值 Python 设计、队列、数组、数据流 简单
0225 用队列实现栈 Python 栈、设计 简单

优先队列题目

题号 标题 题解 标签 难度
0703 数据流中的第 K 大元素 Python 树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) 简单
0347 前 K 个高频元素 Python 堆、哈希表 中等
0451 根据字符出现频率排序 Python 哈希表、字符串、桶排序、计数、排序、堆(优先队列) 中等
0973 最接近原点的 K 个点 Python 几何、数组、数学、分治、快速选择、排序、堆(优先队列) 中等
1296 划分数组为连续数字的集合 Python 贪心、数组、哈希表、排序 中等
0239 滑动窗口最大值 Python 队列,数组、滑动窗口、单调队列、堆(优先队列) 困难
0295 数据流的中位数 Python 设计、双指针、数据流、排序、堆(优先队列) 困难
0023 合并K个升序链表 Python 链表、分治、堆(优先队列)、归并排序 困难
0218 天际线问题 Python 树状数组、线段树、数组、分治、有序集合、扫描线、堆(优先队列) 困难

05. 哈希表

哈希表题目

题号 标题 题解 标签 难度
0705 设计哈希集合 Python 哈希表 简单
0706 设计哈希映射 Python 哈希表 简单
0217 存在重复元素 Python 数组、哈希表 简单
0219 存在重复元素 II Python 数组、哈希表 简单
0220 存在重复元素 III Python 排序、有序集合、哈希表 中等
0136 只出现一次的数字 Python 位运算、数组 简单
0383 赎金信 Python 哈希表、字符串、计数 简单
0349 两个数组的交集 Python 数组、哈希表 简单
0350 两个数组的交集 II Python 数组、哈希表 简单
0036 有效的数独 Python 哈希表 中等
0001 两数之和 Python 数组、哈希表 简单
0015 三数之和 Python 数组、双指针 中等
0018 四数之和 Python 数组、哈希表、双指针 中等
0454 四数相加 II Python 哈希表 中等
0041 缺失的第一个正数 Python 数组、哈希表 困难
0128 最长连续序列 Python 并查集、数组、哈希表 中等
0202 快乐数 Python 哈希表、数学 简单
0242 有效的字母异位词 Python 字符串、哈希表、排序 简单
0205 同构字符串 Python 哈希表 简单
0442 数组中重复的数据
剑指 Offer 61 扑克牌中的顺子 Python 数组、排序 简单
0268 丢失的数字 Python 位运算、数组、数学 简单
剑指 Offer 03 数组中重复的数字 Python 数组、哈希表、排序 简单
0451 根据字符出现频率排序 Python 哈希表、字符串、桶排序、计数、排序、堆(优先队列) 中等
0049 字母异位词分组 Python 字符串、哈希表 中等
0599 两个列表的最小索引总和 Python 哈希表 简单
0387 字符串中的第一个唯一字符 Python 字符串、哈希表 简单
0447 回旋镖的数量 Python 哈希表、数学 中等
0149 直线上最多的点数 Python 哈希表、数学 困难
0359 日志速率限制器 Python 设计、哈希表 简单
0811 子域名访问计数 Python 数组、哈希表、字符串、计数 中等

06. 字符串

字符串基础题目

题号 标题 题解 标签 难度
0125 验证回文串 Python 字符串、双指针 简单
0005 最长回文子串 Python 字符串、动态规划 中等
0003 无重复字符的最长子串 Python 字符串、哈希表、双指针、字符串、滑动窗口 中等
0344 反转字符串 Python 字符串 简单
0557 反转字符串中的单词 III Python 字符串 简单
0049 字母异位词分组 Python 字符串、哈希表 中等
0415 字符串相加 Python 字符串、大数加法 简单
0151 颠倒字符串中的单词 Python 双指针、字符串 中等
0043 字符串相乘 Python 数学、字符串、模拟 中等
0014 最长公共前缀 Python 字符串 简单

单模式串匹配题目

题号 标题 题解 标签 难度
0028 找出字符串中第一个匹配项的下标 Python 字符串、双指针 简单
0459 重复的子字符串 Python 字符串、字符串匹配 简单
0686 重复叠加字符串匹配 Python 字符串、字符串匹配 中等
0796 旋转字符串 Python 字符串、字符串匹配 简单
1408 数组中的字符串匹配 Python 字符串、字符串匹配 简单
2156 查找给定哈希值的子串 Python 字符串、滑动窗口、哈希函数、滚动哈希 中等

字典树题目

题号 标题 题解 标签 难度
0208 实现 Trie (前缀树) Python 设计、字典树、哈希表、字符串 中等
0677 键值映射 Python 设计、字典树、哈希表、字符串 中等
0648 单词替换 Python 字典树、数组、哈希、字符串 中等
0642 设计搜索自动补全系统 Python 设计、字典树、字符串、数据流 困难
0211 添加与搜索单词 - 数据结构设计 Python 深度优先搜索、设计、字典树、字符串 中等
0421 数组中两个数的最大异或值 Python 位运算、字典树、数组、哈希表 中等
0212 单词搜索 II Python 字典树、数组、字符串、回溯、矩阵 困难
0425 单词方块 Python 字典树、数组、字符串、回溯 困难
0336 回文对 Python 字典树、数组、哈希表、字符串 困难
1023 驼峰式匹配 Python 字典树、双指针、字符串、字符串匹配 中等
0676 实现一个魔法字典 Python 设计、字典树、哈希表、字符串 中等
0440 字典序的第K小数字

07. 树

二叉树的遍历题目

题号 标题 题解 标签 难度
0144 二叉树的前序遍历 Python 栈、树 中等
0094 二叉树的中序遍历 Python 栈、树、哈希表 简单
0145 二叉树的后序遍历 Python 栈、树 简单
0102 二叉树的层序遍历 Python 树、广度优先搜索 中等
0103 二叉树的锯齿形层序遍历 Python 树、广度优先搜索、二叉树 中等
0107 二叉树的层序遍历 II Python 树、广度优先搜索 中等
0104 二叉树的最大深度 Python 树、深度优先搜索、递归 简单
0111 二叉树的最小深度 Python 树、深度优先搜索、广度优先搜索 简单
0124 二叉树中的最大路径和 Python 树、深度优先搜索、动态规划、二叉树 困难
0101 对称二叉树 Python 树、深度优先搜索、广度优先搜索 简单
0112 路径总和 Python 树、深度优先搜索 简单
0113 路径总和 II Python 树、深度优先搜索、回溯、二叉树 中等
0236 二叉树的最近公共祖先 Python 中等
0199 二叉树的右视图 Python 树、深度优先搜索、广度优先搜索、递归、队列 中等
0226 翻转二叉树 Python 树、递归 简单
0958 二叉树的完全性检验
0572 另一棵树的子树
0100 相同的树 Python 树、深度优先搜索 简单
0116 填充每个节点的下一个右侧节点指针 Python 树、深度优先搜索、广度优先搜索 中等
0117 填充每个节点的下一个右侧节点指针 II Python 树、深度优先遍历 中等
0297 二叉树的序列化与反序列化 Python 树、设计 困难
0114 二叉树展开为链表

二叉树的还原题目

题号 标题 题解 标签 难度
0105 从前序与中序遍历序列构造二叉树 Python 树、数组、哈希表、分治、二叉树 中等
0106 从中序与后序遍历序列构造二叉树 Python 树、数组、哈希表、分治、二叉树 中等
0889 根据前序和后序遍历构造二叉树 Python 树、数组、哈希表、分治、二叉树 中等

二叉搜索树题目

题号 标题 题解 标签 难度
0098 验证二叉搜索树 Python 树、深度优先搜索、递归 中等
0173 二叉搜索树迭代器 Python 栈、树、设计 中等
0700 二叉搜索树中的搜索 Python 简单
0701 二叉搜索树中的插入操作 Python 中等
0450 删除二叉搜索树中的节点 Python 中等
0703 数据流中的第 K 大元素 Python 树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) 简单
剑指 Offer 54 二叉搜索树的第k大节点 Python 树、深度优先搜索、二叉搜索树、二叉树 简单
0230 二叉搜索树中第K小的元素
0235 二叉搜索树的最近公共祖先 Python 简单
0426 将二叉搜索树转化为排序的双向链表 Python 栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表 中等
0108 将有序数组转换为二叉搜索树 Python 树、深度优先搜索 简单
0110 平衡二叉树 Python 树、深度优先搜索、递归 简单

线段树题目

单点更新题目

题号 标题 题解 标签 难度
0303 区域和检索 - 数组不可变 Python 设计、数组、前缀和 简单
0307 区域和检索 - 数组可修改 Python 设计、树状数组、线段树、数组 中等
0354 俄罗斯套娃信封问题 Python 动态规划、二分查找 困难

区间更新题目

题号 标题 题解 标签 难度
0370 区间加法 Python 数组、前缀和 中等
1109 航班预订统计 Python 数组、前缀和 中等
1450 在既定时间做作业的学生人数 Python 数组 简单
0673 最长递增子序列的个数 Python 动态规划 中等
1310 子数组异或查询 Python 位运算、数组、前缀和 中等
1851 包含每个查询的最小区间

区间合并题目

题号 标题 题解 标签 难度
0729 我的日程安排表 I Python 设计、线段树、有序集合 中等
0731 我的日程安排表 II Python 设计、线段树、有序集合 中等
0732 我的日程安排表 III Python 设计、线段树、有序集合 困难

扫描线问题

题号 标题 题解 标签 难度
0218 天际线问题 Python 树状数组、线段树、数组、分治、有序集合、扫描线、堆(优先队列) 困难
0391 完美矩形 Python 数组、扫描线 困难
0850 矩形面积 II Python 线段树、数组、有序集合、扫描线 困难

树状数组题目

题号 标题 题解 标签 难度
0303 区域和检索 - 数组不可变 Python 设计、数组、前缀和 简单
0307 区域和检索 - 数组可修改 Python 设计、树状数组、线段树、数组 中等
0315 计算右侧小于当前元素的个数 Python 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 困难
1450 在既定时间做作业的学生人数 Python 数组 简单
0354 俄罗斯套娃信封问题 Python 动态规划、二分查找 困难
0673 最长递增子序列的个数 Python 动态规划 中等
1310 子数组异或查询 Python 位运算、数组、前缀和 中等
1893 检查是否区域内所有整数都被覆盖

并查集题目

题号 标题 题解 标签 难度
0990 等式方程的可满足性 Python 并查集、图、数组、字符串 中等
0547 省份数量 Python 深度优先搜索、广度优先搜索、并查集、图 中等
0684 冗余连接 Python 深度优先搜索、广度优先搜索、并查集、图 中等
1319 连通网络的操作次数 Python 深度优先搜索、广度优先搜索、并查集、图 中等
0765 情侣牵手 Python 贪心、深度优先搜索、广度优先搜索、并查集、图 困难
0399 除法求值 Python 深度优先搜索、广度优先搜索、并查集、图、数组、最短路 中等
0959 由斜杠划分区域 Python 深度优先搜索、广度优先搜索、并查集、图 中等
1631 最小体力消耗路径 Python 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) 中等
0778 水位上升的泳池中游泳 Python 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) 困难
1202 交换字符串中的元素 Python 深度优先搜索、广度优先搜索、并查集、哈希表、字符串 中等
0947 移除最多的同行或同列石头 Python 深度优先搜索、并查集、图 中等
0803 打砖块 Python 并查集、数组、矩阵 困难
0128 最长连续序列 Python 并查集、数组、哈希表 中等

08. 图论

图的深度优先搜索题目

题号 标题 题解 标签 难度
0797 所有可能的路径 Python 深度优先搜索、广度优先搜索、图、回溯 中等
0200 岛屿数量 Python 搜索 中等
0695 岛屿的最大面积 Python 搜索 中等
0133 克隆图 Python 深度优先搜索、广度优先搜索、图 中等
0494 目标和 Python 深度优先搜索、动态规划 中等
0144 二叉树的前序遍历 Python 栈、树 中等
0094 二叉树的中序遍历 Python 栈、树、哈希表 简单
0145 二叉树的后序遍历 Python 栈、树 简单
0589 N 叉树的前序遍历 Python 栈、树、深度优先搜索 简单
0590 N 叉树的后序遍历 Python 栈、树、深度优先搜索 简单
0124 二叉树中的最大路径和 Python 树、深度优先搜索、动态规划、二叉树 困难
0199 二叉树的右视图 Python 树、深度优先搜索、广度优先搜索、递归、队列 中等
0543 二叉树的直径 Python 二叉树 简单
0662 二叉树最大宽度
0958 二叉树的完全性检验
0572 另一棵树的子树
0100 相同的树 Python 树、深度优先搜索 简单
0111 二叉树的最小深度 Python 树、深度优先搜索、广度优先搜索 简单
0841 钥匙和房间 Python 深度优先搜索、图 中等
0129 求根节点到叶节点数字之和 Python 树、深度优先搜索、二叉树 中等
0323 无向图中连通分量的数目 Python 深度优先搜索、广度优先搜索、并查集、图 中等
0684 冗余连接 Python 深度优先搜索、广度优先搜索、并查集、图 中等
0802 找到最终的安全状态 Python 深度优先搜索、广度优先搜索、图、拓扑排序 中等
0785 判断二分图 Python 深度优先搜索、广度优先搜索、并查集、图 中等
0886 可能的二分法 Python 深度优先搜索、广度优先搜索、并查集、图 中等
0323 无向图中连通分量的数目 Python 深度优先搜索、广度优先搜索、并查集、图 中等
0130 被围绕的区域 Python 深度优先搜索、广度优先搜索、并查集、数组、矩阵 中等
0417 太平洋大西洋水流问题 Python 深度优先搜索、广度优先搜索、数组、矩阵 中等
1020 飞地的数量 Python 深度优先搜索、广度优先搜索、并查集、数组、矩阵 中等
1254 统计封闭岛屿的数目 Python 深度优先搜索、广度优先搜索、并查集、数组、矩阵 中等
1034 边界着色 Python 深度优先搜索、广度优先搜索、数组、矩阵 中等
剑指 Offer 13 机器人的运动范围 Python 深度优先搜索、广度优先搜索、动态规划 中等
0529 扫雷游戏

图的广度优先搜索题目

题号 标题 题解 标签 难度
0797 所有可能的路径 Python 深度优先搜索、广度优先搜索、图、回溯 中等
0286 墙与门 Python 广度优先搜索 中等
0200 岛屿数量 Python 搜索 中等
0752 打开转盘锁 Python 广度优先搜索 中等
0279 完全平方数 Python 广度优先搜索、数学、动态规划 中等
0133 克隆图 Python 深度优先搜索、广度优先搜索、图 中等
0733 图像渲染 Python 深度优先搜索 简单
0542 01 矩阵 Python 深度优先搜索、广度优先搜索 中等
0322 零钱兑换 Python 动态规划 中等
0207 课程表 Python 深度优先搜索、广度优先搜索、图、拓扑排序 中等
0210 课程表 II Python 深度优先搜索、广度优先搜索、图、拓扑排序 中等
1136 平行课程 Python 图、拓扑排序 中等
0323 无向图中连通分量的数目 Python 深度优先搜索、广度优先搜索、并查集、图 中等
剑指 Offer 13 机器人的运动范围 Python 深度优先搜索、广度优先搜索、动态规划 中等
0199 二叉树的右视图 Python 树、深度优先搜索、广度优先搜索、递归、队列 中等
0662 二叉树最大宽度
0958 二叉树的完全性检验
0572 另一棵树的子树
0100 相同的树 Python 树、深度优先搜索 简单
0111 二叉树的最小深度 Python 树、深度优先搜索、广度优先搜索 简单
剑指 Offer 32 - III 从上到下打印二叉树 III Python 树、广度优先搜索、二叉树 中等

图的拓扑排序题目

题号 标题 题解 标签 难度
0210 课程表 II Python 深度优先搜索、广度优先搜索、图、拓扑排序 中等
0802 找到最终的安全状态 Python 深度优先搜索、广度优先搜索、图、拓扑排序 中等
0851 喧闹和富有 Python 深度优先搜索、图、拓扑排序、数组 中等

图的生成树题目

题号 标题 题解 标签 难度
1584 连接所有点的最小费用
1631 最小体力消耗路径 Python 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) 中等
0778 水位上升的泳池中游泳 Python 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) 困难

单源最短路径题目

题号 标题 题解 标签 难度
0407 接雨水 II
0743 网络延迟时间
0787 K 站中转内最便宜的航班
1631 最小体力消耗路径 Python 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) 中等
1786 从第一个节点出发到最后一个节点的受限路径数

多源最短路径题目

题号 标题 题解 标签 难度
0815 公交路线
1162 地图分析

次短路径题目

题号 标题 题解 标签 难度
2045 到达目的地的第二短时间

差分约束系统

题号 标题 题解 标签 难度
0995 K 连续位的最小翻转次数 Python 位运算、数组、前缀和、滑动窗口 困难
1109 航班预订统计 Python 数组、前缀和 中等

二分图基础题目

题号 标题 题解 标签 难度
0785 判断二分图 Python 深度优先搜索、广度优先搜索、并查集、图 中等

二分图最大匹配题目

题号 标题 题解 标签 难度
04 覆盖
1947 最大兼容性评分和

09. 基础算法

枚举算法题目

题号 标题 题解 标签 难度
0001 两数之和 Python 数组、哈希表 简单
0204 计数质数 Python 数学、哈希表 简单
1925 统计平方和三元组的数目 Python 数学、枚举 简单
1450 在既定时间做作业的学生人数 Python 数组 简单
剑指 Offer 57 - II 和为s的连续正数序列 Python 数学、双指针、枚举 简单
0078 子集 Python 位运算、数组、回溯算法 中等
0090 子集 II Python 位运算、数组、回溯 中等
0800 相似 RGB 颜色 Python 数学、字符串、枚举 简单
0221 最大正方形
0560 和为 K 的子数组 Python 数组、哈希表、前缀和 中等

递归算法题目

题号 标题 题解 标签 难度
0344 反转字符串 Python 字符串 简单
0024 两两交换链表中的节点 Python 递归、链表 中等
0118 杨辉三角 Python 数组 简单
0119 杨辉三角 II Python 数组 简单
0206 反转链表 Python 链表 简单
0092 反转链表 II Python 链表 中等
0021 合并两个有序链表 Python 递归、链表 简单
0509 斐波那契数 Python 数组 简单
0070 爬楼梯 Python 动态规划 简单
0104 二叉树的最大深度 Python 树、深度优先搜索、递归 简单
0124 二叉树中的最大路径和 Python 树、深度优先搜索、动态规划、二叉树 困难
0226 翻转二叉树 Python 树、递归 简单
0050 Pow(x, n) Python 数学、二分查找 中等
0021 合并两个有序链表 Python 递归、链表 简单
0779 第K个语法符号 Python 递归 中等
0095 不同的二叉搜索树 II Python 树、二叉搜索树、动态规划、回溯、二叉树 中等
剑指 Offer 62 圆圈中最后剩下的数字 Python 递归、数学 简单

分治算法题目

题号 标题 题解 标签 难度
0004 寻找两个正序数组的中位数 Python 数组、二分查找、分治算法 困难
0023 合并K个升序链表 Python 链表、分治、堆(优先队列)、归并排序 困难
0053 最大子数组和 Python 数组、分治算法、动态规划 简单
0241 为运算表达式设计优先级
0169 多数元素 Python 数组、哈希表 简单
0050 Pow(x, n) Python 数学、二分查找 中等
0014 最长公共前缀 Python 字符串 简单
剑指 Offer 33 二叉搜索树的后序遍历序列 Python 栈、树、二叉搜索树、递归、二叉树、单调栈 中等

回溯算法题目

题号 标题 题解 标签 难度
0046 全排列 Python 回溯算法 中等
0047 全排列 II Python 数组、回溯 中等
0037 解数独 Python 数组、回溯、矩阵 困难
0022 括号生成 Python 字符串、回溯算法 中等
0017 电话号码的字母组合 Python 深度优先搜索、递归、字符串、回溯算法 中等
0784 字母大小写全排列 Python 位运算、字符串、回溯 中等
0039 组合总和 Python 数组、回溯 中等
0040 组合总和 II Python 数组、回溯 中等
0078 子集 Python 位运算、数组、回溯算法 中等
0090 子集 II Python 位运算、数组、回溯 中等
0473 火柴拼正方形 Python 位运算、数组、动态规划、回溯、状态压缩 中等
1593 拆分字符串使唯一子字符串的数目最大 Python 哈希表、字符串、回溯 中等
1079 活字印刷 Python 字符串、回溯 中等
0093 复原 IP 地址 Python 字符串、回溯 中等
0079 单词搜索 Python 数组、回溯算法 中等
0679 24 点游戏

贪心算法题目

题号 标题 题解 标签 难度
0455 分发饼干 Python 贪心、数组、排序 简单
0860 柠檬水找零 Python 贪心、数组 简单
0056 合并区间 Python 数组、排序 中等
0435 无重叠区间 Python 贪心、数组、动态规划、排序 中等
0452 用最少数量的箭引爆气球 Python 贪心、数组、排序 中等
0055 跳跃游戏 Python 贪心算法、数组、动态规划 中等
0045 跳跃游戏 II Python 贪心、数组、动态规划 中等
0392 判断子序列 Python 双指针、字符串、动态规划 简单
0122 买卖股票的最佳时机 II Python 数组、贪心算法 简单
0561 数组拆分 Python 数组 简单
1710 卡车上的最大单元数 Python 贪心、数组、排序 简单
1217 玩筹码 Python 贪心、数组、数学 简单
1247 交换字符使得字符串相同 Python 贪心、数学、字符串 中等
1400 构造 K 个回文字符串 Python 贪心、哈希表、字符串、计数 中等
0921 使括号有效的最少添加 Python 栈、贪心、字符串 中等
1029 两地调度 Python 贪心、数组、排序 中等
1605 给定行和列的和求可行矩阵 Python 贪心、数组、矩阵 中等
0135 分发糖果 Python 贪心、数组 困难
0134 加油站 Python 贪心、数组 中等
0053 最大子数组和 Python 数组、分治算法、动态规划 简单
0376 摆动序列 Python 贪心、数组、动态规划 中等
0738 单调递增的数字 Python 贪心、数学 中等
0402 移掉 K 位数字
0861 翻转矩阵后的得分 Python 贪心、位运算、数组、矩阵 中等
0670 最大交换

位运算题目

题号 标题 题解 标签 难度
0504 七进制数 Python 数学 简单
0405 数字转换为十六进制数 Python 位运算、数学 简单
0190 颠倒二进制位 Python 位运算 简单
0191 位1的个数 Python 位运算 简单
0371 两整数之和 Python 位运算 中等
0089 格雷编码 Python 位运算、数学、回溯 中等
0201 数字范围按位与 Python 位运算 中等
0338 比特位计数 Python 位运算、动态规划 简单
0136 只出现一次的数字 Python 位运算、数组 简单
0137 只出现一次的数字 II Python 位运算、数组 简单
0260 只出现一次的数字 III Python 位运算、数组 中等
0268 丢失的数字 Python 位运算、数组、数学 简单
1349 参加考试的最大学生数
0645 错误的集合

10. 动态规划

动态规划基础题目

题号 标题 题解 标签 难度
0509 斐波那契数 Python 数组 简单
0070 爬楼梯 Python 动态规划 简单
0062 不同路径 Python 数组、动态规划 中等

记忆化搜索题目

题号 标题 题解 标签 难度
1137 第 N 个泰波那契数 Python 记忆化搜索、数学、动态规划 简单
0375 猜数字大小 II
0494 目标和 Python 深度优先搜索、动态规划 中等
0576 出界的路径数 Python 动态规划 中等
0087 扰乱字符串
0403 青蛙过河 Python 数组、动态规划 困难
0552 学生出勤记录 II
0913 猫和老鼠
0329 矩阵中的最长递增路径 Python 深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、动态规划 困难

线性 DP 题目

题号 标题 题解 标签 难度
0118 杨辉三角 Python 数组 简单
0119 杨辉三角 II Python 数组 简单
0198 打家劫舍 Python 动态规划 中等
0213 打家劫舍 II Python 动态规划 中等
0338 比特位计数 Python 位运算、动态规划 简单
0045 跳跃游戏 II Python 贪心、数组、动态规划 中等
0115 不同的子序列 Python 字符串、动态规划 困难
0403 青蛙过河 Python 数组、动态规划 困难
0576 出界的路径数 Python 动态规划 中等
0091 解码方法 Python 字符串、动态规划 中等
0639 解码方法 II Python 字符串、动态规划 困难
0650 只有两个键的键盘 Python 数学、动态规划 中等
0678 有效的括号字符串 Python 栈、贪心、字符串、动态规划 中等
0688 骑士在棋盘上的概率 Python 动态规划 中等
1137 第 N 个泰波那契数 Python 记忆化搜索、数学、动态规划 简单
1220 统计元音字母序列的数目 Python 动态规划 困难
1751 最多可以参加的会议数目 II
1787 使所有区间的异或结果为零
剑指 Offer 42 连续子数组的最大和 Python 数组、分治、动态规划 简单
0300 最长递增子序列 Python 二分查找、动态规划 中等
1143 最长公共子序列 Python 字符串、动态规划 中等
0120 三角形最小路径和 Python 数组、动态规划 中等
0053 最大子数组和 Python 数组、分治算法、动态规划 简单
0152 乘积最大子数组 Python 数组、动态规划 中等
0887 鸡蛋掉落 Python 数学、二分查找、动态规划 困难
0072 编辑距离 Python 字符串、动态规划 困难
0044 通配符匹配 Python 贪心、递归、字符串、动态规划 困难
0010 正则表达式匹配 Python 递归、字符串、动态规划 困难
0354 俄罗斯套娃信封问题 Python 动态规划、二分查找 困难
0121 买卖股票的最佳时机 Python 数组、动态规划 简单
0122 买卖股票的最佳时机 II Python 数组、贪心算法 简单
0123 买卖股票的最佳时机 III Python 数组、动态规划 困难
0188 买卖股票的最佳时机 IV Python 数组、动态规划 困难
0309 最佳买卖股票时机含冷冻期 Python 数组、动态规划 中等
0714 买卖股票的最佳时机含手续费 Python 贪心、数组、动态规划 中等

背包问题题目

题号 标题 题解 标签 难度
0279 完全平方数 Python 广度优先搜索、数学、动态规划 中等
0322 零钱兑换 Python 动态规划 中等
0416 分割等和子集 Python 数组、动态规划 中等
0474 一和零 Python 数组、字符串、动态规划 中等
0494 目标和 Python 深度优先搜索、动态规划 中等
0518 零钱兑换 II Python 数组、动态规划 中等
0638 大礼包
0879 盈利计划
1049 最后一块石头的重量 II Python 数组、动态规划 中等
1155 掷骰子的N种方法
1449 数位成本和为目标值的最大数字
1995 统计特殊四元组

区间 DP 题目

题号 标题 题解 标签 难度
1995 统计特殊四元组
0375 猜数字大小 II
0516 最长回文子序列 Python 字符串、动态规划 中等
0730 统计不同回文子序列
1039 多边形三角剖分的最低得分
0664 奇怪的打印机
0877 石子游戏 Python 数组、数学、动态规划、博弈 中等
2104 子数组范围和
0312 戳气球

树形 DP 题目

题号 标题 题解 标签 难度
0124 二叉树中的最大路径和 Python 树、深度优先搜索、动态规划、二叉树 困难
0543 二叉树的直径 Python 二叉树 简单
0337 打家劫舍 III Python 树、深度优先搜索、动态规划、二叉树 中等
0333 最大 BST 子树

状态压缩 DP 题目

题号 标题 题解 标签 难度
0526 优美的排列
0464 我能赢吗
0847 访问所有节点的最短路径
1994 好子集的数目
0935 骑士拨号器
1349 参加考试的最大学生数

计数 DP 题目

题号 标题 题解 标签 难度
0062 不同路径 Python 数组、动态规划 中等
0063 不同路径 II Python 数组、动态规划、矩阵 中等
0096 不同的二叉搜索树 Python 树、二叉搜索树、数学、动态规划、二叉树 中等
1259 不相交的握手

数位 DP 题目

题号 标题 题解 标签 难度
0600 不含连续1的非负整数
0233 数字 1 的个数
0902 最大为 N 的数字组合
1015 可被 K 整除的最小整数

概率 DP 题目

题号 标题 题解 标签 难度
0688 骑士在棋盘上的概率 Python 动态规划 中等
0808 分汤
0837 新 21 点

动态规划优化题目