LeetCodeCategories

分类刷 leetcode。
转自 https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/05.Categories-List.md

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

01. 数组

数组基础题目

数组操作题目

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

二维数组题目

题号 标题 题解 标签 难度
0498 对角线遍历 Python 数组、矩阵、模拟 中等
0048 旋转图像 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 栈、数组、双指针、动态规划、单调栈 困难
0443 压缩字符串 Python 双指针、字符串 中等

快慢指针题目

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

分离双指针题目

题号 标题 题解 标签 难度
0350 两个数组的交集 II Python 数组、哈希表、双指针、二分查找、排序 简单
0925 长按键入 Python 双指针、字符串 简单
0844 比较含退格的字符串 Python 栈、双指针、字符串、模拟 简单
1229 安排会议日程 Python 数组、双指针、排序 中等
0415 字符串相加 Python 数学、字符串、模拟 简单
0392 判断子序列 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 数组、二分查找、前缀和、滑动窗口 中等
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 最长有效括号 Python 栈、字符串、动态规划 困难
0946 验证栈序列 Python 栈、数组、模拟 中等
剑指 Offer 06 从尾到头打印链表 Python 栈、递归、链表、双指针 简单
0071 简化路径 栈、字符串 中等

单调栈

题号 标题 题解 标签 难度
0739 每日温度 Python 栈、数组、单调栈 中等
0496 下一个更大元素 I Python 栈、数组、哈希表、单调栈 简单
0503 下一个更大元素 II Python 栈、数组、单调栈 中等
0901 股票价格跨度 Python 栈、设计、数据流、单调栈 中等
0084 柱状图中最大的矩形 Python 栈、数组、单调栈 困难
0316 去除重复字母 Python 栈、贪心、字符串、单调栈 中等
0042 接雨水 Python 栈、数组、双指针、动态规划、单调栈 困难
0085 最大矩形 栈、数组、动态规划、矩阵、单调栈 困难
0862 和至少为 K 的最短子数组 Python 队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列) 困难

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 数组、桶排序、有序集合、排序、滑动窗口 困难
1941 检查是否所有字符出现次数相同 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 字符串、字符串匹配 中等
1668 最大重复子字符串 字符串、字符串匹配 简单
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 二叉树的完全性检验 Python 树、广度优先搜索、二叉树 中等
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 检查是否区域内所有整数都被覆盖 Python 数组、哈希表、前缀和 简单

并查集题目

题号 标题 题解 标签 难度
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 二叉树最大宽度 Python 树、深度优先搜索、广度优先搜索、二叉树 中等
0958 二叉树的完全性检验 Python 树、广度优先搜索、二叉树 中等
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 广度优先搜索、数组、动态规划 中等
0323 无向图中连通分量的数目 Python 深度优先搜索、广度优先搜索、并查集、图 中等
剑指 Offer 13 机器人的运动范围 Python 深度优先搜索、广度优先搜索、动态规划 中等
0199 二叉树的右视图 Python 树、深度优先搜索、广度优先搜索、二叉树 中等
0662 二叉树最大宽度 Python 树、深度优先搜索、广度优先搜索、二叉树 中等
0958 二叉树的完全性检验 Python 树、广度优先搜索、二叉树 中等
0572 另一棵树的子树 树、深度优先搜索、二叉树、字符串匹配、哈希函数 简单
0100 相同的树 Python 树、深度优先搜索、广度优先搜索、二叉树 简单
0111 二叉树的最小深度 Python 树、深度优先搜索、广度优先搜索、二叉树 简单
剑指 Offer 32 - III 从上到下打印二叉树 III Python 树、广度优先搜索、二叉树 中等

图的拓扑排序题目

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

图的最小生成树题目

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

单源最短路径题目

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

多源最短路径题目

题号 标题 题解 标签 难度
0815 公交路线 广度优先搜索、数组、哈希表 困难
1162 地图分析 广度优先搜索、数组、动态规划、矩阵 中等

次短路径题目

题号 标题 题解 标签 难度
2045 到达目的地的第二短时间 广度优先搜索、图、最短路 困难

差分约束系统

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

二分图基础题目

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

二分图最大匹配题目

题号 标题 题解 标签 难度
LCP 04 覆盖 位运算、图、数组、动态规划、状态压缩 困难
1947 最大兼容性评分和 Python 位运算、数组、动态规划、回溯、状态压缩 中等
1595 连通两组点的最小成本 Python 位运算、数组、动态规划、状态压缩、矩阵 困难

09. 基础算法

枚举算法题目

题号 标题 题解 标签 难度
0001 两数之和 Python 数组、哈希表 简单
0204 计数质数 Python 数组、数学、枚举、数论 中等
1925 统计平方和三元组的数目 Python 数学、枚举 简单
1450 在既定时间做作业的学生人数 Python 数组 简单
1620 网络信号最好的坐标 数组、枚举 中等
剑指 Offer 57 - II 和为s的连续正数序列 Python 数学、双指针、枚举 简单
0800 相似 RGB 颜色 Python 数学、字符串、枚举 简单
0221 最大正方形 Python 数组、动态规划、矩阵 中等
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 递归、数学 中等
0779 第K个语法符号 Python 位运算、递归、数学 中等
0095 不同的二叉搜索树 II Python 树、二叉搜索树、动态规划、回溯、二叉树 中等
剑指 Offer 62 圆圈中最后剩下的数字 Python 递归、数学 简单

分治算法题目

题号 标题 题解 标签 难度
0004 寻找两个正序数组的中位数 Python 数组、二分查找、分治 困难
0023 合并 K 个升序链表 Python 链表、分治、堆(优先队列)、归并排序 困难
0053 最大子数组和 Python 数组、分治、动态规划 中等
0241 为运算表达式设计优先级 Python 递归、记忆化搜索、数学、字符串、动态规划 中等
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 贪心、数组、动态规划 中等
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 位运算、分治 简单
1009 十进制整数的反码 Python 位运算 简单
0191 位1的个数 Python 位运算、分治 简单
0371 两整数之和 Python 位运算、数学 中等
0089 格雷编码 Python 位运算、数学、回溯 中等
0201 数字范围按位与 Python 位运算 中等
0338 比特位计数 Python 位运算、动态规划 简单
0136 只出现一次的数字 Python 位运算、数组 简单
0137 只出现一次的数字 II Python 位运算、数组 中等
0260 只出现一次的数字 III Python 位运算、数组 中等
0268 丢失的数字 Python 位运算、数组、哈希表、数学、二分查找、排序 简单
1349 参加考试的最大学生数 Python 位运算、数组、动态规划、状态压缩、矩阵 困难
0645 错误的集合 位运算、数组、哈希表、排序 简单
0078 子集 Python 位运算、数组、回溯 中等
0090 子集 II Python 位运算、数组、回溯 中等

10. 动态规划

动态规划基础题目

题号 标题 题解 标签 难度
0509 斐波那契数 Python 递归、记忆化搜索、数学、动态规划 简单
0070 爬楼梯 Python 记忆化搜索、数学、动态规划 简单
0062 不同路径 Python 数学、动态规划、组合数学 中等

记忆化搜索题目

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

线性 DP 题目

单串线性 DP 问题

题号 标题 题解 标签 难度
0300 最长递增子序列 Python 数组、二分查找、动态规划 中等
0673 最长递增子序列的个数 Python 树状数组、线段树、数组、动态规划 中等
0354 俄罗斯套娃信封问题 Python 数组、二分查找、动态规划、排序 困难
0053 最大子数组和 Python 数组、分治、动态规划 中等
0152 乘积最大子数组 Python 数组、动态规划 中等
0918 环形子数组的最大和 Python 队列、数组、分治、动态规划、单调队列 中等
0198 打家劫舍 Python 数组、动态规划 中等
0213 打家劫舍 II Python 数组、动态规划 中等
0740 删除并获得点数 数组、哈希表、动态规划 中等
1388 3n 块披萨 贪心、数组、动态规划、堆(优先队列) 困难
0873 最长的斐波那契子序列的长度 Python 数组、哈希表、动态规划 中等
1027 最长等差数列 数组、哈希表、二分查找、动态规划 中等
1055 形成字符串的最短路径 贪心、双指针、字符串 中等
0368 最大整除子集 数组、数学、动态规划、排序 中等
0032 最长有效括号 Python 栈、字符串、动态规划 困难
0413 等差数列划分 数组、动态规划 中等
0091 解码方法 Python 字符串、动态规划 中等
0639 解码方法 II Python 字符串、动态规划 困难
0132 分割回文串 II 字符串、动态规划 困难
1220 统计元音字母序列的数目 Python 动态规划 困难
0338 比特位计数 Python 位运算、动态规划 简单
0801 使序列递增的最小交换次数 Python 数组、动态规划 困难
0871 最低加油次数 贪心、数组、动态规划、堆(优先队列) 困难
0045 跳跃游戏 II Python 贪心、数组、动态规划 中等
0813 最大平均值和的分组 数组、动态规划、前缀和 中等
0887 鸡蛋掉落 Python 数学、二分查找、动态规划 困难
0256 粉刷房子 数组、动态规划 中等
0265 粉刷房子 II 数组、动态规划 困难
1473 粉刷房子 III 数组、动态规划 困难
0975 奇偶跳 栈、数组、动态规划、有序集合、单调栈 困难
0403 青蛙过河 Python 数组、动态规划 困难
1478 安排邮筒 数组、数学、动态规划、排序 困难
1230 抛掷硬币 数学、动态规划、概率与统计 中等
0410 分割数组的最大值 Python 贪心、数组、二分查找、动态规划、前缀和 困难
1751 最多可以参加的会议数目 II 数组、二分查找、动态规划、排序 困难
1787 使所有区间的异或结果为零 位运算、数组、动态规划 困难
0121 买卖股票的最佳时机 Python 数组、动态规划 简单
0122 买卖股票的最佳时机 II Python 贪心、数组 中等
0123 买卖股票的最佳时机 III Python 数组、动态规划 困难
0188 买卖股票的最佳时机 IV Python 数组、动态规划 困难
0309 最佳买卖股票时机含冷冻期 Python 数组、动态规划 中等
0714 买卖股票的最佳时机含手续费 Python 贪心、数组 中等

双串线性 DP 问题

题号 标题 题解 标签 难度
1143 最长公共子序列 Python 字符串、动态规划 中等
0712 两个字符串的最小ASCII删除和 字符串、动态规划 中等
0718 最长重复子数组 Python 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 中等
0583 两个字符串的删除操作 Python 字符串、动态规划 中等
0072 编辑距离 Python 字符串、动态规划 困难
0044 通配符匹配 Python 贪心、递归、字符串、动态规划 困难
0010 正则表达式匹配 Python 递归、字符串、动态规划 困难
0097 交错字符串 字符串、动态规划 中等
0115 不同的子序列 Python 字符串、动态规划 困难
0087 扰乱字符串 字符串、动态规划 困难

矩阵线性 DP 问题

题号 标题 题解 标签 难度
0118 杨辉三角 Python 数组、动态规划 简单
0119 杨辉三角 II Python 数组、动态规划 简单
0120 三角形最小路径和 Python 数组、动态规划 中等
0064 最小路径和 Python 数组、动态规划、矩阵 中等
0174 地下城游戏 数组、动态规划、矩阵 困难
0221 最大正方形 Python 数组、动态规划、矩阵 中等
0931 下降路径最小和 数组、动态规划、矩阵 中等
0576 出界的路径数 Python 动态规划 中等
0085 最大矩形 栈、数组、动态规划、矩阵、单调栈 困难
0363 矩形区域不超过 K 的最大数值和 数组、二分查找、矩阵、有序集合、前缀和 困难
面试题 17.24 最大子矩阵 数组、动态规划、矩阵、前缀和 困难
1444 切披萨的方案数 记忆化搜索、数组、动态规划、矩阵 困难

无串线性 DP 问题

题号 标题 题解 标签 难度
1137 第 N 个泰波那契数 Python 记忆化搜索、数学、动态规划 简单
0650 只有两个键的键盘 Python 数学、动态规划 中等
0264 丑数 II Python 哈希表、数学、动态规划、堆(优先队列) 中等
0279 完全平方数 Python 广度优先搜索、数学、动态规划 中等
0343 整数拆分 Python 数学、动态规划 中等

背包问题题目

0-1 背包问题

题号 标题 题解 标签 难度
0416 分割等和子集 Python 数组、动态规划 中等
0494 目标和 Python 数组、动态规划、回溯 中等
1049 最后一块石头的重量 II Python 数组、动态规划 中等

完全背包问题

题号 标题 题解 标签 难度
0279 完全平方数 Python 广度优先搜索、数学、动态规划 中等
0322 零钱兑换 Python 广度优先搜索、数组、动态规划 中等
0518 零钱兑换 II Python 数组、动态规划 中等
0139 单词拆分 Python 字典树、记忆化搜索、数组、哈希表、字符串、动态规划 中等
0377 组合总和 Ⅳ Python 数组、动态规划 中等
0638 大礼包 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 中等
1449 数位成本和为目标值的最大数字 Python 数组、动态规划 困难

多重背包问题

分组背包问题

题号 标题 题解 标签 难度
1155 掷骰子等于目标和的方法数 Python 动态规划 中等
2585 获得分数的方法数 Python 数组、动态规划 困难

多维背包问题

题号 标题 题解 标签 难度
0474 一和零 Python 数组、字符串、动态规划 中等
0879 盈利计划 数组、动态规划 困难
1995 统计特殊四元组 数组、枚举 简单

区间 DP 题目

题号 标题 题解 标签 难度
0486 预测赢家 Python 递归、数组、数学、动态规划、博弈 中等
0312 戳气球 Python 数组、动态规划 困难
0877 石子游戏 Python 数组、数学、动态规划、博弈 中等
1000 合并石头的最低成本 Python 数组、动态规划、前缀和 困难
1547 切棍子的最小成本 Python 数组、动态规划、排序 困难
0664 奇怪的打印机 Python 字符串、动态规划 困难
1039 多边形三角剖分的最低得分 Python 数组、动态规划 中等
0546 移除盒子 Python 记忆化搜索、数组、动态规划 困难
0375 猜数字大小 II Python 数学、动态规划、博弈 中等
0678 有效的括号字符串 Python 栈、贪心、字符串、动态规划 中等
0005 最长回文子串 Python 字符串、动态规划 中等
0516 最长回文子序列 Python 字符串、动态规划 中等
0730 统计不同回文子序列 字符串、动态规划 困难
2104 子数组范围和 栈、数组、单调栈 中等

树形 DP 题目

固定根的树形 DP 题目

题号 标题 题解 标签 难度
0543 二叉树的直径 Python 树、深度优先搜索、二叉树 简单
0124 二叉树中的最大路径和 Python 树、深度优先搜索、动态规划、二叉树 困难
1245 树的直径 Python 树、深度优先搜索、广度优先搜索、图、拓扑排序 中等
2246 相邻字符不同的最长路径 Python 树、深度优先搜索、图、拓扑排序、数组、字符串 困难
0687 最长同值路径 Python 树、深度优先搜索、二叉树 中等
0337 打家劫舍 III Python 树、深度优先搜索、动态规划、二叉树 中等
0333 最大 BST 子树 树、深度优先搜索、二叉搜索树、动态规划、二叉树 中等
1617 统计子树中城市之间最大距离 Python 位运算、树、动态规划、状态压缩、枚举 困难
2538 最大价值和与最小价值和的差值 Python 树、深度优先搜索、数组、动态规划 困难
1569 将子数组重新排序得到同一个二叉搜索树的方案数 树、并查集、二叉搜索树、记忆化搜索、数组、数学、分治、动态规划、二叉树、组合数学 困难
1372 二叉树中的最长交错路径 树、深度优先搜索、动态规划、二叉树 中等
1373 二叉搜索子树的最大键值和 树、深度优先搜索、二叉搜索树、动态规划、二叉树 困难
0968 监控二叉树 Python 树、深度优先搜索、动态规划、二叉树 困难
1273 删除树节点 树、深度优先搜索、广度优先搜索 中等
1519 子树中标签相同的节点数 树、深度优先搜索、广度优先搜索、哈希表、计数 中等

不定根的树形 DP 题目

题号 标题 题解 标签 难度
0310 最小高度树 Python 深度优先搜索、广度优先搜索、图、拓扑排序 中等
0834 树中距离之和 Python 树、深度优先搜索、图、动态规划 困难
2581 统计可能的树根数目 树、深度优先搜索、哈希表、动态规划 困难

状态压缩 DP 题目

题号 标题 题解 标签 难度
1879 两个数组最小的异或值之和 Python 位运算、数组、动态规划、状态压缩 困难
2172 数组的最大与和 Python 位运算、数组、动态规划、状态压缩 困难
1947 最大兼容性评分和 Python 位运算、数组、动态规划、回溯、状态压缩 中等
1595 连通两组点的最小成本 Python 位运算、数组、动态规划、状态压缩、矩阵 困难
1494 并行课程 II 位运算、图、动态规划、状态压缩 困难
1655 分配重复整数 位运算、数组、动态规划、回溯、状态压缩 困难
1986 完成任务的最少工作时间段 Python 位运算、数组、动态规划、回溯、状态压缩 中等
1434 每个人戴不同帽子的方案数 位运算、数组、动态规划、状态压缩 困难
1799 N 次操作后的最大分数和 位运算、数组、数学、动态规划、回溯、状态压缩、数论 困难
1681 最小不兼容性 位运算、数组、动态规划、状态压缩 困难
0526 优美的排列 Python 位运算、数组、动态规划、回溯、状态压缩 中等
0351 安卓系统手势解锁 Python 动态规划、回溯 中等
0464 我能赢吗 Python 位运算、记忆化搜索、数学、动态规划、状态压缩、博弈 中等
0847 访问所有节点的最短路径 Python 位运算、广度优先搜索、图、动态规划、状态压缩 困难
0638 大礼包 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 中等
1994 好子集的数目 Python 位运算、数组、数学、动态规划、状态压缩 困难
1349 参加考试的最大学生数 Python 位运算、数组、动态规划、状态压缩、矩阵 困难
0698 划分为k个相等的子集 Python 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 中等
0943 最短超级串 位运算、数组、字符串、动态规划、状态压缩 困难
0691 贴纸拼词 Python 位运算、数组、字符串、动态规划、回溯、状态压缩 困难
0982 按位与为零的三元组 Python 位运算、数组、哈希表 困难

计数 DP 题目

题号 标题 题解 标签 难度
0062 不同路径 Python 数学、动态规划、组合数学 中等
0063 不同路径 II Python 数组、动态规划、矩阵 中等
0343 整数拆分 Python 数学、动态规划 中等
0096 不同的二叉搜索树 Python 树、二叉搜索树、数学、动态规划、二叉树 中等
1259 不相交的握手 数学、动态规划 困难
0790 多米诺和托米诺平铺 动态规划 中等
0070 爬楼梯 Python 记忆化搜索、数学、动态规划 简单
0746 使用最小花费爬楼梯 Python 数组、动态规划 简单
0509 斐波那契数 Python 递归、记忆化搜索、数学、动态规划 简单
1137 第 N 个泰波那契数 Python 记忆化搜索、数学、动态规划 简单

数位 DP 题目

题号 标题 题解 标签 难度
2376 统计特殊整数 Python 数学、动态规划 困难
0357 统计各位数字都不同的数字个数 Python 数学、动态规划、回溯 中等
1012 至少有 1 位重复的数字 Python 数学、动态规划 困难
0902 最大为 N 的数字组合 Python 数组、数学、字符串、二分查找、动态规划 困难
0788 旋转数字 Python 数学、动态规划 中等
0600 不含连续1的非负整数 Python 动态规划 困难
0233 数字 1 的个数 Python 递归、数学、动态规划 困难
2719 统计整数数目 Python 数学、字符串、动态规划 困难
0248 中心对称数 III 递归、数组、字符串 困难
1088 易混淆数 II 数学、回溯 困难
1067 范围内的数字计数 数学、动态规划 困难
1742 盒子中小球的最大数量 Python 哈希表、数学、计数 简单
面试题 17.06 2出现的次数 Python 递归、数学、动态规划 困难

概率 DP 题目

题号 标题 题解 标签 难度
0688 骑士在棋盘上的概率 Python 动态规划 中等
0808 分汤 数学、动态规划、概率与统计 中等
0837 新 21 点 数学、动态规划、滑动窗口、概率与统计 中等
1230 抛掷硬币 数学、动态规划、概率与统计 中等
1467 两个盒子中球的颜色数相同的概率 数组、数学、动态规划、回溯、组合数学、概率与统计 困难
1227 飞机座位分配概率 Python 脑筋急转弯、数学、动态规划、概率与统计 中等
1377 T 秒后青蛙的位置 树、深度优先搜索、广度优先搜索、图 困难
剑指 Offer 60 n个骰子的点数 数学、动态规划、概率与统计 中等

动态规划优化题目