06.LeetCode 面试最常考 100 题(按分类排序)
06.LeetCode 面试最常考 100 题(按分类排序)
01. 数组
数组基础题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0054 | 螺旋矩阵 | - | 数组、矩阵、模拟 | 中等 | 
| 0048 | 旋转图像 | - | 数组、数学、矩阵 | 中等 | 
排序算法题目
选择排序题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0215 | 数组中的第K个最大元素 | - | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | 
希尔排序题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0912 | 排序数组 | - | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | 
归并排序题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0912 | 排序数组 | - | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | 
| 0088 | 合并两个有序数组 | - | 数组、双指针、排序 | 简单 | 
快速排序题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0912 | 排序数组 | - | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | 
| 0169 | 多数元素 | - | 数组、哈希表、分治、计数、排序 | 简单 | 
堆排序题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0912 | 排序数组 | - | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | 
| 0215 | 数组中的第K个最大元素 | - | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | 
计数排序题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0912 | 排序数组 | - | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | 
桶排序题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0912 | 排序数组 | - | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | 
其他排序题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0136 | 只出现一次的数字 | - | 位运算、数组 | 简单 | 
| 0056 | 合并区间 | - | 数组、排序 | 中等 | 
| 0179 | 最大数 | - | 贪心、数组、字符串、排序 | 中等 | 
二分查找题目
二分下标题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0704 | 二分查找 | - | 数组、二分查找 | 简单 | 
| 0034 | 在排序数组中查找元素的第一个和最后一个位置 | - | 数组、二分查找 | 中等 | 
| 0153 | 寻找旋转排序数组中的最小值 | - | 数组、二分查找 | 中等 | 
| 0033 | 搜索旋转排序数组 | - | 数组、二分查找 | 中等 | 
| 0162 | 寻找峰值 | - | 数组、二分查找 | 中等 | 
| 0004 | 寻找两个正序数组的中位数 | - | 数组、二分查找、分治 | 困难 | 
| 0240 | 搜索二维矩阵 II | - | 数组、二分查找、分治、矩阵 | 中等 | 
二分答案题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0069 | x 的平方根 | - | 数学、二分查找 | 简单 | 
双指针题目
对撞指针题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0015 | 三数之和 | - | 数组、双指针、排序 | 中等 | 
快慢指针题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0283 | 移动零 | - | 数组、双指针 | 简单 | 
| 0088 | 合并两个有序数组 | - | 数组、双指针、排序 | 简单 | 
分离双指针题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0415 | 字符串相加 | - | 数学、字符串、模拟 | 简单 | 
滑动窗口题目
固定长度窗口题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0239 | 滑动窗口最大值 | - | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | 
不定长度窗口题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0003 | 无重复字符的最长子串 | - | 哈希表、字符串、滑动窗口 | 中等 | 
| 0076 | 最小覆盖子串 | - | 哈希表、字符串、滑动窗口 | 困难 | 
| 0718 | 最长重复子数组 | - | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | 
02. 链表
链表经典题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0083 | 删除排序链表中的重复元素 | - | 链表 | 简单 | 
| 0082 | 删除排序链表中的重复元素 II | - | 链表、双指针 | 中等 | 
| 0206 | 反转链表 | - | 递归、链表 | 简单 | 
| 0092 | 反转链表 II | - | 链表 | 中等 | 
| 0025 | K 个一组翻转链表 | - | 递归、链表 | 困难 | 
| 0234 | 回文链表 | - | 栈、递归、链表、双指针 | 简单 | 
链表排序题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0148 | 排序链表 | - | 链表、双指针、分治、排序、归并排序 | 中等 | 
| 0021 | 合并两个有序链表 | - | 递归、链表 | 简单 | 
| 0023 | 合并 K 个升序链表 | - | 链表、分治、堆(优先队列)、归并排序 | 困难 | 
链表双指针题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0141 | 环形链表 | - | 哈希表、链表、双指针 | 简单 | 
| 0142 | 环形链表 II | - | 哈希表、链表、双指针 | 中等 | 
| 0160 | 相交链表 | - | 哈希表、链表、双指针 | 简单 | 
| 0019 | 删除链表的倒数第 N 个结点 | - | 链表、双指针 | 中等 | 
| 剑指 Offer 22 | 链表中倒数第k个节点 | - | 链表、双指针 | 简单 | 
| 0143 | 重排链表 | - | 栈、递归、链表、双指针 | 中等 | 
| 0002 | 两数相加 | - | 递归、链表、数学 | 中等 | 
03. 堆栈
堆栈基础题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0155 | 最小栈 | - | 栈、设计 | 中等 | 
| 0020 | 有效的括号 | - | 栈、字符串 | 简单 | 
| 0227 | 基本计算器 II | - | 栈、数学、字符串 | 中等 | 
| 0232 | 用栈实现队列 | - | 栈、设计、队列 | 简单 | 
| 0394 | 字符串解码 | - | 栈、递归、字符串 | 中等 | 
| 0032 | 最长有效括号 | - | 栈、字符串、动态规划 | 困难 | 
单调栈
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0042 | 接雨水 | - | 栈、数组、双指针、动态规划、单调栈 | 困难 | 
04. 队列
队列基础题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0225 | 用队列实现栈 | - | 栈、设计、队列 | 简单 | 
优先队列题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0023 | 合并 K 个升序链表 | - | 链表、分治、堆(优先队列)、归并排序 | 困难 | 
| 0239 | 滑动窗口最大值 | - | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | 
05. 哈希表
哈希表题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0001 | 两数之和 | - | 数组、哈希表 | 简单 | 
| 0015 | 三数之和 | - | 数组、双指针、排序 | 中等 | 
| 0041 | 缺失的第一个正数 | - | 数组、哈希表 | 困难 | 
| 0128 | 最长连续序列 | - | 并查集、数组、哈希表 | 中等 | 
| 0136 | 只出现一次的数字 | - | 位运算、数组 | 简单 | 
06. 字符串
字符串基础题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0003 | 无重复字符的最长子串 | - | 哈希表、字符串、滑动窗口 | 中等 | 
| 0005 | 最长回文子串 | - | 字符串、动态规划 | 中等 | 
| 0415 | 字符串相加 | - | 数学、字符串、模拟 | 简单 | 
| 0151 | 反转字符串中的单词 | - | 双指针、字符串 | 中等 | 
| 0043 | 字符串相乘 | - | 数学、字符串、模拟 | 中等 | 
| 0014 | 最长公共前缀 | - | 字典树、字符串 | 简单 | 
07. 树
二叉树的遍历题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0144 | 二叉树的前序遍历 | - | 栈、树、深度优先搜索、二叉树 | 简单 | 
| 0094 | 二叉树的中序遍历 | - | 栈、树、深度优先搜索、二叉树 | 简单 | 
| 0102 | 二叉树的层序遍历 | - | 树、广度优先搜索、二叉树 | 中等 | 
| 0103 | 二叉树的锯齿形层序遍历 | - | 树、广度优先搜索、二叉树 | 中等 | 
| 0236 | 二叉树的最近公共祖先 | - | 树、深度优先搜索、二叉树 | 中等 | 
| 0104 | 二叉树的最大深度 | - | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | 
| 0112 | 路径总和 | - | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | 
| 0113 | 路径总和 II | - | 树、深度优先搜索、回溯、二叉树 | 中等 | 
| 0101 | 对称二叉树 | - | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | 
| 0124 | 二叉树中的最大路径和 | - | 树、深度优先搜索、动态规划、二叉树 | 困难 | 
| 0199 | 二叉树的右视图 | - | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | 
| 0226 | 翻转二叉树 | - | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | 
二叉树的还原题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0105 | 从前序与中序遍历序列构造二叉树 | - | 树、数组、哈希表、分治、二叉树 | 中等 | 
二叉搜索树题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0098 | 验证二叉搜索树 | - | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | 
| 0110 | 平衡二叉树 | - | 树、深度优先搜索、二叉树 | 简单 | 
并查集题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0128 | 最长连续序列 | - | 并查集、数组、哈希表 | 中等 | 
08. 图论
图的深度优先搜索题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0200 | 岛屿数量 | - | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | 
| 0695 | 岛屿的最大面积 | - | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | 
| 0144 | 二叉树的前序遍历 | - | 栈、树、深度优先搜索、二叉树 | 简单 | 
| 0094 | 二叉树的中序遍历 | - | 栈、树、深度优先搜索、二叉树 | 简单 | 
| 0129 | 求根节点到叶节点数字之和 | - | 树、深度优先搜索、二叉树 | 中等 | 
| 0124 | 二叉树中的最大路径和 | - | 树、深度优先搜索、动态规划、二叉树 | 困难 | 
| 0199 | 二叉树的右视图 | - | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | 
| 0543 | 二叉树的直径 | - | 树、深度优先搜索、二叉树 | 简单 | 
| 0662 | 二叉树最大宽度 | - | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | 
图的广度优先搜索题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0200 | 岛屿数量 | - | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | 
| 0322 | 零钱兑换 | - | 广度优先搜索、数组、动态规划 | 中等 | 
| 0199 | 二叉树的右视图 | - | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | 
| 0662 | 二叉树最大宽度 | - | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | 
09. 基础算法
枚举算法题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0001 | 两数之和 | - | 数组、哈希表 | 简单 | 
| 0078 | 子集 | - | 位运算、数组、回溯 | 中等 | 
| 0221 | 最大正方形 | - | 数组、动态规划、矩阵 | 中等 | 
递归算法题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0024 | 两两交换链表中的节点 | - | 递归、链表 | 中等 | 
| 0206 | 反转链表 | - | 递归、链表 | 简单 | 
| 0092 | 反转链表 II | - | 链表 | 中等 | 
| 0021 | 合并两个有序链表 | - | 递归、链表 | 简单 | 
| 0070 | 爬楼梯 | - | 记忆化搜索、数学、动态规划 | 简单 | 
| 0104 | 二叉树的最大深度 | - | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | 
| 0124 | 二叉树中的最大路径和 | - | 树、深度优先搜索、动态规划、二叉树 | 困难 | 
| 0226 | 翻转二叉树 | - | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | 
分治算法题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0053 | 最大子数组和 | - | 数组、分治、动态规划 | 中等 | 
| 0023 | 合并 K 个升序链表 | - | 链表、分治、堆(优先队列)、归并排序 | 困难 | 
| 0004 | 寻找两个正序数组的中位数 | - | 数组、二分查找、分治 | 困难 | 
| 0169 | 多数元素 | - | 数组、哈希表、分治、计数、排序 | 简单 | 
| 0014 | 最长公共前缀 | - | 字典树、字符串 | 简单 | 
回溯算法题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0046 | 全排列 | - | 数组、回溯 | 中等 | 
| 0022 | 括号生成 | - | 字符串、动态规划、回溯 | 中等 | 
| 0078 | 子集 | - | 位运算、数组、回溯 | 中等 | 
| 0039 | 组合总和 | - | 数组、回溯 | 中等 | 
| 0093 | 复原 IP 地址 | - | 字符串、回溯 | 中等 | 
贪心算法题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0053 | 最大子数组和 | - | 数组、分治、动态规划 | 中等 | 
| 0056 | 合并区间 | - | 数组、排序 | 中等 | 
| 0122 | 买卖股票的最佳时机 II | - | 贪心、数组 | 中等 | 
位运算题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0136 | 只出现一次的数字 | - | 位运算、数组 | 简单 | 
10. 动态规划
动态规划题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0070 | 爬楼梯 | - | 记忆化搜索、数学、动态规划 | 简单 | 
| 0121 | 买卖股票的最佳时机 | - | 数组、动态规划 | 简单 | 
| 0322 | 零钱兑换 | - | 广度优先搜索、数组、动态规划 | 中等 | 
| 0300 | 最长递增子序列 | - | 数组、二分查找、动态规划 | 中等 | 
| 1143 | 最长公共子序列 | - | 字符串、动态规划 | 中等 | 
| 0718 | 最长重复子数组 | - | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | 
| 0064 | 最小路径和 | - | 数组、动态规划、矩阵 | 中等 | 
| 0072 | 编辑距离 | - | 字符串、动态规划 | 困难 | 
| 0032 | 最长有效括号 | - | 栈、字符串、动态规划 | 困难 | 
| 0221 | 最大正方形 | - | 数组、动态规划、矩阵 | 中等 | 
| 0062 | 不同路径 | - | 数学、动态规划、组合数学 | 中等 | 
| 0152 | 乘积最大子数组 | - | 数组、动态规划 | 中等 | 
| 0198 | 打家劫舍 | - | 数组、动态规划 | 中等 | 
11. 补充题目
设计数据结构题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0146 | LRU 缓存 | 设计、哈希表、链表、双向链表 | 中等 | 
模拟题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0008 | 字符串转换整数 (atoi) | - | 字符串 | 中等 | 
| 0165 | 比较版本号 | 双指针、字符串 | 中等 | |
| 0468 | 验证IP地址 | - | 字符串 | 中等 | 
思维锻炼题目
| 题号 | 标题 | 题解 | 标签 | 难度 | 
|---|---|---|---|---|
| 0031 | 下一个排列 | 数组、双指针 | 中等 | |
| 0470 | 用 Rand7() 实现 Rand10() | 数学、拒绝采样、概率与统计、随机化 | 中等 | 
参考资料
- 【清单】CodeTop 企业题库
来源:https://github.com/itcharge/LeetCode-Py
