面试必刷 150 题

数组 / 字符串
| 题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
|---|---|---|---|---|---|
| 88 | 合并两个有序数组 | [✓] | 数组 双指针 排序 | 🟢 | 🀄️ 🔗 |
| 27 | 移除元素 | [✓] | 数组 双指针 | 🟢 | 🀄️ 🔗 |
| 26 | 删除有序数组中的重复项 | [✓] | 数组 双指针 | 🟢 | 🀄️ 🔗 |
| 80 | 删除有序数组中的重复项 II | [✓] | 数组 双指针 | 🟠 | 🀄️ 🔗 |
| 169 | 多数元素 | [✓] | 数组 哈希表 分治 2+ | 🟢 | 🀄️ 🔗 |
| 189 | 轮转数组 | [✓] | 数组 数学 双指针 | 🟠 | 🀄️ 🔗 |
| 121 | 买卖股票的最佳时机 | [✓] | 数组 动态规划 | 🟢 | 🀄️ 🔗 |
| 122 | 买卖股票的最佳时机 II | [✓] | 贪心 数组 动态规划 | 🟠 | 🀄️ 🔗 |
| 55 | 跳跃游戏 | [✓] | 贪心 数组 动态规划 | 🟠 | 🀄️ 🔗 |
| 45 | 跳跃游戏 II | [✓] | 贪心 数组 动态规划 | 🟠 | 🀄️ 🔗 |
| 274 | H 指数 | [✓] | 数组 计数排序 排序 | 🟠 | 🀄️ 🔗 |
| 380 | O(1) 时间插入、删除和获取随机元素 | [✓] | 设计 数组 哈希表 2+ | 🟠 | 🀄️ 🔗 |
| 238 | 除自身以外数组的乘积 | [✓] | 数组 前缀和 | 🟠 | 🀄️ 🔗 |
| 134 | 加油站 | [✓] | 贪心 数组 | 🟠 | 🀄️ 🔗 |
| 135 | 分发糖果 | [✓] | 贪心 数组 | 🔴 | 🀄️ 🔗 |
| 42 | 接雨水 | [✓] | 栈 数组 双指针 2+ | 🔴 | 🀄️ 🔗 |
| 13 | 罗马数字转整数 | [✓] | 哈希表 数学 字符串 | 🟢 | 🀄️ 🔗 |
| 12 | 整数转罗马数字 | [✓] | 哈希表 数学 字符串 | 🟠 | 🀄️ 🔗 |
| 58 | 最后一个单词的长度 | [✓] | 字符串 | 🟢 | 🀄️ 🔗 |
| 14 | 最长公共前缀 | [✓] | 字典树 字符串 | 🟢 | 🀄️ 🔗 |
| 151 | 反转字符串中的单词 | [✓] | 双指针 字符串 | 🟠 | 🀄️ 🔗 |
| 6 | Z 字形变换 | [✓] | 字符串 | 🟠 | 🀄️ 🔗 |
| 28 | 找出字符串中第一个匹配项的下标 | [✓] | 双指针 字符串 字符串匹配 | 🟢 | 🀄️ 🔗 |
| 68 | 文本左右对齐 | [✓] | 数组 字符串 模拟 | 🔴 | 🀄️ 🔗 |
双指针
| 题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
|---|---|---|---|---|---|
| 125 | 验证回文串 | [✓] | 双指针 字符串 | 🟢 | 🀄️ 🔗 |
| 392 | 判断子序列 | [✓] | 双指针 字符串 动态规划 | 🟢 | 🀄️ 🔗 |
| 167 | 两数之和 II - 输入有序数组 | [✓] | 数组 双指针 二分查找 | 🟠 | 🀄️ 🔗 |
| 11 | 盛最多水的容器 | [✓] | 贪心 数组 双指针 | 🟠 | 🀄️ 🔗 |
| 15 | 三数之和 | [✓] | 数组 双指针 排序 | 🟠 | 🀄️ 🔗 |
滑动窗口
| 题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
|---|---|---|---|---|---|
| 209 | 长度最小的子数组 | [✓] | 数组 二分查找 前缀和 1+ | 🟠 | 🀄️ 🔗 |
| 3 | 无重复字符的最长子串 | [✓] | 哈希表 字符串 滑动窗口 | 🟠 | 🀄️ 🔗 |
| 30 | 串联所有单词的子串 | [✓] | 哈希表 字符串 滑动窗口 | 🔴 | 🀄️ 🔗 |
| 76 | 最小覆盖子串 | [✓] | 哈希表 字符串 滑动窗口 | 🔴 | 🀄️ 🔗 |
矩阵
| 题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
|---|---|---|---|---|---|
| 36 | 有效的数独 | [✓] | 数组 哈希表 矩阵 | 🟠 | 🀄️ 🔗 |
| 54 | 螺旋矩阵 | [✓] | 数组 矩阵 模拟 | 🟠 | 🀄️ 🔗 |
| 48 | 旋转图像 | [✓] | 数组 数学 矩阵 | 🟠 | 🀄️ 🔗 |
| 73 | 矩阵置零 | [✓] | 数组 哈希表 矩阵 | 🟠 | 🀄️ 🔗 |
| 289 | 生命游戏 | [✓] | 数组 矩阵 模拟 | 🟠 | 🀄️ 🔗 |
哈希表
| 题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
|---|---|---|---|---|---|
| 383 | 赎金信 | [✓] | 哈希表 字符串 计数 | 🟢 | 🀄️ 🔗 |
| 205 | 同构字符串 | [✓] | 哈希表 字符串 | 🟢 | 🀄️ 🔗 |
| 290 | 单词规律 | [✓] | 哈希表 字符串 | 🟢 | 🀄️ 🔗 |
| 242 | 有效的字母异位词 | [✓] | 哈希表 字符串 排序 | 🟢 | 🀄️ 🔗 |
| 49 | 字母异位词分组 | [✓] | 数组 哈希表 字符串 1+ | 🟠 | 🀄️ 🔗 |
| 1 | 两数之和 | [✓] | 数组 哈希表 | 🟢 | 🀄️ 🔗 |
| 202 | 快乐数 | [✓] | 哈希表 数学 双指针 | 🟢 | 🀄️ 🔗 |
| 219 | 存在重复元素 II | [✓] | 数组 哈希表 滑动窗口 | 🟢 | 🀄️ 🔗 |
| 128 | 最长连续序列 | [✓] | 并查集 数组 哈希表 | 🟠 | 🀄️ 🔗 |
间隔
| 题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
|---|---|---|---|---|---|
| 228 | 汇总区间 | [✓] | 数组 | 🟢 | 🀄️ 🔗 |
| 56 | 合并区间 | [✓] | 数组 排序 | 🟠 | 🀄️ 🔗 |
| 57 | 插入区间 | [✓] | 数组 | 🟠 | 🀄️ 🔗 |
| 452 | 用最少数量的箭引爆气球 | [✓] | 贪心 数组 排序 | 🟠 | 🀄️ 🔗 |
栈
| 题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
|---|---|---|---|---|---|
| 20 | 有效的括号 | [✓] | 栈 字符串 | 🟢 | 🀄️ 🔗 |
| 71 | 简化路径 | [✓] | 栈 字符串 | 🟠 | 🀄️ 🔗 |
| 155 | 最小栈 | [✓] | 栈 设计 | 🟠 | 🀄️ 🔗 |
| 150 | 逆波兰表达式求值 | [✓] | 栈 数组 数学 | 🟠 | 🀄️ 🔗 |
| 224 | 基本计算器 | [✓] | 栈 递归 数学 1+ | 🔴 | 🀄️ 🔗 |
链表
| 题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
|---|---|---|---|---|---|
| 141 | 环形链表 | [✓] | 哈希表 链表 双指针 | 🟢 | 🀄️ 🔗 |
| 2 | 两数相加 | [✓] | 递归 链表 数学 | 🟠 | 🀄️ 🔗 |
| 21 | 合并两个有序链表 | [✓] | 递归 链表 | 🟢 | 🀄️ 🔗 |
| 138 | 随机链表的复制 | [✓] | 哈希表 链表 | 🟠 | 🀄️ 🔗 |
| 92 | 反转链表 II | [✓] | 链表 | 🟠 | 🀄️ 🔗 |
| 25 | K 个一组翻转链表 | [✓] | 递归 链表 | 🔴 | 🀄️ 🔗 |
| 19 | 删除链表的倒数第 N 个结点 | [✓] | 链表 双指针 | 🟠 | 🀄️ 🔗 |
| 82 | 删除排序链表中的重复元素 II | [✓] | 链表 双指针 | 🟠 | 🀄️ 🔗 |
| 61 | 旋转链表 | [✓] | 链表 双指针 | 🟠 | 🀄️ 🔗 |
| 86 | 分隔链表 | [✓] | 链表 双指针 | 🟠 | 🀄️ 🔗 |
| 146 | LRU 缓存 | [✓] | 设计 哈希表 链表 1+ | 🟠 | 🀄️ 🔗 |
树
- 二叉树
| 题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
|---|---|---|---|---|---|
| 104 | 二叉树的最大深度 | [✓] | 树 深度优先搜索 广度优先搜索 1+ | 🟢 | 🀄️ 🔗 |
| 100 | 相同的树 | [✓] | 树 深度优先搜索 广度优先搜索 1+ | 🟢 | 🀄️ 🔗 |
| 226 | 翻转二叉树 | [✓] | 树 深度优先搜索 广度优先搜索 1+ | 🟢 | 🀄️ 🔗 |
| 101 | 对称二叉树 | [✓] | 树 深度优先搜索 广度优先搜索 1+ | 🟢 | 🀄️ 🔗 |
| 105 | 从前序与中序遍历序列构造二叉树 | [✓] | 树 数组 哈希表 2+ | 🟠 | 🀄️ 🔗 |
| 106 | 从中序与后序遍历序列构造二叉树 | [✓] | 树 数组 哈希表 2+ | 🟠 | 🀄️ 🔗 |
| 117 | 填充每个节点的下一个右侧节点指针 II | [✓] | 树 深度优先搜索 广度优先搜索 2+ | 🟠 | 🀄️ 🔗 |
| 114 | 二叉树展开为链表 | [✓] | 栈 树 深度优先搜索 2+ | 🟠 | 🀄️ 🔗 |
| 112 | 路径总和 | [✓] | 树 深度优先搜索 广度优先搜索 1+ | 🟢 | 🀄️ 🔗 |
| 129 | 求根节点到叶节点数字之和 | [✓] | 树 深度优先搜索 二叉树 | 🟠 | 🀄️ 🔗 |
| 124 | 二叉树中的最大路径和 | [✓] | 树 深度优先搜索 动态规划 1+ | 🔴 | 🀄️ 🔗 |
| 173 | 二叉搜索树迭代器 | [✓] | 栈 树 设计 3+ | 🟠 | 🀄️ 🔗 |
| 222 | 完全二叉树的节点个数 | [✓] | 位运算 树 二分查找 1+ | 🟢 | 🀄️ 🔗 |
| 236 | 二叉树的最近公共祖先 | [✓] | 树 深度优先搜索 二叉树 | 🟠 | 🀄️ 🔗 |
- 二叉树的广度优先搜索
| 题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
|---|---|---|---|---|---|
| 199 | 二叉树的右视图 | [✓] | 树 深度优先搜索 广度优先搜索 1+ | 🟠 | 🀄️ 🔗 |
| 637 | 二叉树的层平均值 | [✓] | 树 深度优先搜索 广度优先搜索 1+ | 🟢 | 🀄️ 🔗 |
| 102 | 二叉树的层序遍历 | [✓] | 树 广度优先搜索 二叉树 | 🟠 | 🀄️ 🔗 |
| 103 | 二叉树的锯齿形层序遍历 | [✓] | 树 广度优先搜索 二叉树 | 🟠 | 🀄️ 🔗 |
- 二叉搜索树
| 题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
|---|---|---|---|---|---|
| 530 | 二叉搜索树的最小绝对差 | [✓] | 树 深度优先搜索 广度优先搜索 2+ | 🟢 | 🀄️ 🔗 |
| 230 | 二叉搜索树中第 K 小的元素 | [✓] | 树 深度优先搜索 二叉搜索树 1+ | 🟠 | 🀄️ 🔗 |
| 98 | 验证二叉搜索树 | [✓] | 树 深度优先搜索 二叉搜索树 1+ | 🟠 | 🀄️ 🔗 |
- 前缀树
| 题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
|---|---|---|---|---|---|
| 208 | 实现 Trie (前缀树) | [✓] | 设计 字典树 哈希表 1+ | 🟠 | 🀄️ 🔗 |
| 211 | 添加与搜索单词 - 数据结构设计 | [✓] | 深度优先搜索 设计 字典树 1+ | 🟠 | 🀄️ 🔗 |
| 212 | 单词搜索 II | [✓] | 字典树 数组 字符串 2+ | 🔴 | 🀄️ 🔗 |
图
- 图的深度优先搜索
| 题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
|---|---|---|---|---|---|
| 200 | 岛屿数量 | [✓] | 深度优先搜索 广度优先搜索 并查集 2+ | 🟠 | 🀄️ 🔗 |
| 130 | 被围绕的区域 | [✓] | 深度优先搜索 广度优先搜索 并查集 2+ | 🟠 | 🀄️ 🔗 |
| 133 | 克隆图 | [✓] | 深度优先搜索 广度优先搜索 图 1+ | 🟠 | 🀄️ 🔗 |
| 399 | 除法求值 | [✓] | 深度优先搜索 广度优先搜索 并查集 4+ | 🟠 | 🀄️ 🔗 |
| 207 | 课程表 | [✓] | 深度优先搜索 广度优先搜索 图 1+ | 🟠 | 🀄️ 🔗 |
| 210 | 课程表 II | [✓] | 深度优先搜索 广度优先搜索 图 1+ | 🟠 | 🀄️ 🔗 |
- 图的广度优先搜索
| 题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
|---|---|---|---|---|---|
| 945 | 使数组唯一的最小增量 | [✓] | 贪心 数组 计数 1+ | 🟠 | 🀄️ 🔗 |
| 433 | 最小基因变化 | [✓] | 广度优先搜索 哈希表 字符串 | 🟠 | 🀄️ 🔗 |
| 127 | 单词接龙 | [✓] | 广度优先搜索 哈希表 字符串 | 🔴 | 🀄️ 🔗 |
回溯
| 题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
|---|---|---|---|---|---|
| 17 | 电话号码的字母组合 | [✓] | 哈希表 字符串 回溯 | 🟠 | 🀄️ 🔗 |
| 77 | 组合 | [✓] | 回溯 | 🟠 | 🀄️ 🔗 |
| 46 | 全排列 | [✓] | 数组 回溯 | 🟠 | 🀄️ 🔗 |
| 39 | 组合总和 | [✓] | 数组 回溯 | 🟠 | 🀄️ 🔗 |
| 52 | N 皇后 II | [✓] | 回溯 | 🔴 | 🀄️ 🔗 |
| 22 | 括号生成 | [✓] | 字符串 动态规划 回溯 | 🟠 | 🀄️ 🔗 |
| 79 | 单词搜索 | [✓] | 数组 字符串 回溯 1+ | 🟠 | 🀄️ 🔗 |
分治
| 题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
|---|---|---|---|---|---|
| 108 | 将有序数组转换为二叉搜索树 | [✓] | 树 二叉搜索树 数组 2+ | 🟢 | 🀄️ 🔗 |
| 148 | 排序链表 | [✓] | 链表 双指针 分治 2+ | 🟠 | 🀄️ 🔗 |
| 772 | 基本计算器 III 🔒 | [✓] | 栈 递归 数学 1+ | 🔴 | 🀄️ 🔗 |
| 23 | 合并 K 个升序链表 | [✓] | 链表 分治 堆(优先队列) 1+ | 🔴 | 🀄️ 🔗 |
二分查找
| 题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
|---|---|---|---|---|---|
| 35 | 搜索插入位置 | [✓] | 数组 二分查找 | 🟢 | 🀄️ 🔗 |
| 74 | 搜索二维矩阵 | [✓] | 数组 二分查找 矩阵 | 🟠 | 🀄️ 🔗 |
| 162 | 寻找峰值 | [✓] | 数组 二分查找 | 🟠 | 🀄️ 🔗 |
| 33 | 搜索旋转排序数组 | [✓] | 数组 二分查找 | 🟠 | 🀄️ 🔗 |
| 34 | 在排序数组中查找元素的第一个和最后一个位置 | [✓] | 数组 二分查找 | 🟠 | 🀄️ 🔗 |
| 153 | 寻找旋转排序数组中的最小值 | [✓] | 数组 二分查找 | 🟠 | 🀄️ 🔗 |
| 4 | 寻找两个正序数组的中位数 | [✓] | 数组 二分查找 分治 | 🔴 | 🀄️ 🔗 |
堆
| 题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
|---|---|---|---|---|---|
| 215 | 数组中的第K个最大元素 | [✓] | 数组 分治 快速选择 2+ | 🟠 | 🀄️ 🔗 |
| 502 | IPO | [✓] | 贪心 数组 排序 1+ | 🔴 | 🀄️ 🔗 |
| 373 | 查找和最小的 K 对数字 | [✓] | 数组 堆(优先队列) | 🟠 | 🀄️ 🔗 |
| 295 | 数据流的中位数 | [✓] | 设计 双指针 数据流 2+ | 🔴 | 🀄️ 🔗 |
位运算
| 题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
|---|---|---|---|---|---|
| 67 | 二进制求和 | [✓] | 位运算 数学 字符串 1+ | 🟢 | 🀄️ 🔗 |
| 190 | 颠倒二进制位 | [✓] | 位运算 分治 | 🟢 | 🀄️ 🔗 |
| 191 | 位1的个数 | [✓] | 位运算 分治 | 🟢 | 🀄️ 🔗 |
| 136 | 只出现一次的数字 | [✓] | 位运算 数组 | 🟢 | 🀄️ 🔗 |
| 137 | 只出现一次的数字 II | [✓] | 位运算 数组 | 🟠 | 🀄️ 🔗 |
| 201 | 数字范围按位与 | [✓] | 位运算 | 🟠 | 🀄️ 🔗 |
数学
| 题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
|---|---|---|---|---|---|
| 9 | 回文数 | [✓] | 数学 | 🟢 | 🀄️ 🔗 |
| 66 | 加一 | [✓] | 数组 数学 | 🟢 | 🀄️ 🔗 |
| 172 | 阶乘后的零 | [✓] | 数学 | 🟠 | 🀄️ 🔗 |
| 69 | x 的平方根 | [✓] | 数学 二分查找 | 🟢 | 🀄️ 🔗 |
| 50 | Pow(x, n) | [✓] | 递归 数学 | 🟠 | 🀄️ 🔗 |
| 149 | 直线上最多的点数 | [✓] | 几何 数组 哈希表 1+ | 🔴 | 🀄️ 🔗 |
动态规划
- Kadane 算法
| 题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
|---|---|---|---|---|---|
| 53 | 最大子数组和 | [✓] | 数组 分治 动态规划 | 🟠 | 🀄️ 🔗 |
| 954 | 二倍数对数组 | [✓] | 贪心 数组 哈希表 1+ | 🟠 | 🀄️ 🔗 |
- 一维
| 题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
|---|---|---|---|---|---|
| 70 | 爬楼梯 | [✓] | 记忆化搜索 数学 动态规划 | 🟢 | 🀄️ 🔗 |
| 198 | 打家劫舍 | [✓] | 数组 动态规划 | 🟠 | 🀄️ 🔗 |
| 139 | 单词拆分 | [✓] | 字典树 记忆化搜索 数组 3+ | 🟠 | 🀄️ 🔗 |
| 322 | 零钱兑换 | [✓] | 广度优先搜索 数组 动态规划 | 🟠 | 🀄️ 🔗 |
| 300 | 最长递增子序列 | [✓] | 数组 二分查找 动态规划 | 🟠 | 🀄️ 🔗 |
- 多维
| 题号 | 标题 | 题解 | 标签 | 难度 | 力扣 |
|---|---|---|---|---|---|
| 120 | 三角形最小路径和 | [✓] | 数组 动态规划 | 🟠 | 🀄️ 🔗 |
| 64 | 最小路径和 | [✓] | 数组 动态规划 矩阵 | 🟠 | 🀄️ 🔗 |
| 63 | 不同路径 II | [✓] | 数组 动态规划 矩阵 | 🟠 | 🀄️ 🔗 |
| 5 | 最长回文子串 | [✓] | 双指针 字符串 动态规划 | 🟠 | 🀄️ 🔗 |
| 97 | 交错字符串 | [✓] | 字符串 动态规划 | 🟠 | 🀄️ 🔗 |
| 72 | 编辑距离 | [✓] | 字符串 动态规划 | 🟠 | 🀄️ 🔗 |
| 123 | 买卖股票的最佳时机 III | [✓] | 数组 动态规划 | 🔴 | 🀄️ 🔗 |
| 188 | 买卖股票的最佳时机 IV | [✓] | 数组 动态规划 | 🔴 | 🀄️ 🔗 |
| 221 | 最大正方形 | [✓] | 数组 动态规划 矩阵 | 🟠 | 🀄️ 🔗 |
相关信息
