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 简化路径 栈、字符串 中等