- juxq's blog
《算法通关手册》算法分类题单(原始)1
- 2024-4-8 9:05:59 @
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 | 简化路径 | 栈、字符串 | 中等 |