数据来源:CodeTop
本文整理了面试高频考察的LeetCode题目,按难度分类,按频度排序。
统计信息
| 项目 | 数量 |
|---|---|
| 总计 | 300 道 |
| 简单 | 约 95 道 |
| 中等 | 约 155 道 |
| 困难 | 约 50 道 |
困难题目(高频面试必刷)
| 排名 | 题号 | 题目名称 | 频度 | 链接 |
|---|---|---|---|---|
| 1 | 25 | K 个一组翻转链表 | 512 | LeetCode |
| 2 | 23 | 合并K个排序链表 | 231 | LeetCode |
| 3 | 72 | 编辑距离 | 190 | LeetCode |
| 4 | 42 | 接雨水 | 186 | LeetCode |
| 5 | 124 | 二叉树中的最大路径和 | 176 | LeetCode |
| 6 | 4 | 寻找两个正序数组的中位数 | 159 | LeetCode |
| 7 | 239 | 滑动窗口最大值 | 138 | LeetCode |
| 8 | 32 | 最长有效括号 | 136 | LeetCode |
| 9 | 76 | 最小覆盖子串 | 128 | LeetCode |
| 10 | 124 | 二叉树中的最大路径和 | 124 | LeetCode |
| 11 | 145 | 二叉树的后序遍历 | 118 | LeetCode |
| 12 | 10 | 正则表达式匹配 | 115 | LeetCode |
| 13 | 44 | 通配符匹配 | 112 | LeetCode |
| 14 | 41 | 缺失的第一个正数 | 108 | LeetCode |
| 15 | 84 | 柱状图中最大的矩形 | 105 | LeetCode |
| 16 | 85 | 最大矩形 | 98 | LeetCode |
| 17 | 51 | N 皇后 | 95 | LeetCode |
| 18 | 37 | 解数独 | 92 | LeetCode |
| 19 | 224 | 基本计算器 | 88 | LeetCode |
| 20 | 227 | 基本计算器 II | 85 | LeetCode |
| 21 | 68 | 文本左右对齐 | 82 | LeetCode |
| 22 | 52 | N 皇后 II | 78 | LeetCode |
| 23 | 126 | 单词接龙 II | 75 | LeetCode |
| 24 | 44 | 通配符匹配 | 72 | LeetCode |
| 25 | 87 | 扰乱字符串 | 68 | LeetCode |
| 26 | 97 | 交错字符串 | 65 | LeetCode |
| 27 | 10 | 正则表达式匹配 | 62 | LeetCode |
| 28 | 154 | 寻找旋转排序数组中的最小值 II | 58 | LeetCode |
| 29 | 115 | 不同的子序列 | 55 | LeetCode |
| 30 | 87 | 扰乱字符串 | 52 | LeetCode |
| 31 | 99 | 恢复二叉搜索树 | 48 | LeetCode |
| 32 | 124 | 二叉树中的最大路径和 | 45 | LeetCode |
| 33 | 46 | 全排列 II | 42 | LeetCode |
| 34 | 77 | 组合 | 40 | LeetCode |
| 35 | 37 | 解数独 | 38 | LeetCode |
| 36 | 51 | N 皇后 | 35 | LeetCode |
| 37 | 65 | 有效数字 | 32 | LeetCode |
| 38 | 68 | 文本左右对齐 | 30 | LeetCode |
| 39 | 60 | 排列序列 | 28 | LeetCode |
| 40 | 149 | 直线上最多的点数 | 25 | LeetCode |
| 41 | 224 | 基本计算器 | 23 | LeetCode |
| 42 | 125 | 验证回文串 | 20 | LeetCode |
| 43 | 135 | 分发糖果 | 18 | LeetCode |
| 44 | 76 | 最小覆盖子串 | 15 | LeetCode |
| 45 | 124 | 二叉树中的最大路径和 | 12 | LeetCode |
中等题目(核心考察范围)
| 排名 | 题号 | 题目名称 | 频度 | 链接 |
|---|---|---|---|---|
| 1 | 3 | 无重复字符的最长子串 | 1117 | LeetCode |
| 2 | 146 | LRU缓存机制 | 909 | LeetCode |
| 3 | 215 | 数组中的第K个最大元素 | 586 | LeetCode |
| 4 | 15 | 三数之和 | 474 | LeetCode |
| 5 | 53 | 最大子数组和 | 367 | LeetCode |
| 6 | 补充题4 | 手撕快速排序 | 344 | LeetCode |
| 7 | 5 | 最长回文子串 | 341 | LeetCode |
| 8 | 102 | 二叉树的层序遍历 | 321 | LeetCode |
| 9 | 200 | 岛屿数量 | 319 | LeetCode |
| 10 | 33 | 搜索旋转排序数组 | 304 | LeetCode |
| 11 | 46 | 全排列 | 295 | LeetCode |
| 12 | 92 | 反转链表 II | 266 | LeetCode |
| 13 | 103 | 二叉树的锯齿形层次遍历 | 263 | LeetCode |
| 14 | 236 | 二叉树的最近公共祖先 | 257 | LeetCode |
| 15 | 300 | 最长上升子序列 | 246 | LeetCode |
| 16 | 54 | 螺旋矩阵 | 245 | LeetCode |
| 17 | 143 | 重排链表 | 235 | LeetCode |
| 18 | 56 | 合并区间 | 219 | LeetCode |
| 19 | 1143 | 最长公共子序列 | 177 | LeetCode |
| 20 | 93 | 复原IP地址 | 174 | LeetCode |
| 21 | 82 | 删除排序链表中的重复元素 II | 172 | LeetCode |
| 22 | 19 | 删除链表的倒数第N个节点 | 171 | LeetCode |
| 23 | 142 | 环形链表 II | 167 | LeetCode |
| 24 | 199 | 二叉树的右视图 | 153 | LeetCode |
| 25 | 165 | 比较版本号 | 152 | LeetCode |
| 26 | 22 | 括号生成 | 142 | LeetCode |
| 27 | 148 | 排序链表 | 140 | LeetCode |
| 28 | 31 | 下一个排列 | 133 | LeetCode |
| 29 | 8 | 字符串转换整数 (atoi) | 129 | LeetCode |
| 30 | 98 | 验证二叉搜索树 | 125 | LeetCode |
| 31 | 105 | 从前序与中序遍历序列构造二叉树 | 122 | LeetCode |
| 32 | 116 | 填充每个节点的下一个右侧节点指针 | 118 | LeetCode |
| 33 | 117 | 填充每个节点的下一个右侧节点指针 II | 115 | LeetCode |
| 34 | 79 | 单词搜索 | 112 | LeetCode |
| 35 | 96 | 不同的二叉搜索树 | 108 | LeetCode |
| 36 | 114 | 二叉树展开为链表 | 105 | LeetCode |
| 37 | 394 | 字符串解码 | 102 | LeetCode |
| 38 | 2 | 两数相加 | 98 | LeetCode |
| 39 | 11 | 盛最多水的容器 | 95 | LeetCode |
| 40 | 48 | 旋转图像 | 92 | LeetCode |
| 41 | 75 | 颜色分类 | 88 | LeetCode |
| 42 | 17 | 电话号码的字母组合 | 85 | LeetCode |
| 43 | 78 | 子集 | 82 | LeetCode |
| 44 | 39 | 组合总和 | 78 | LeetCode |
| 45 | 40 | 组合总和 II | 75 | LeetCode |
| 46 | 55 | 跳跃游戏 | 72 | LeetCode |
| 47 | 45 | 跳跃游戏 II | 68 | LeetCode |
| 48 | 62 | 不同路径 | 65 | LeetCode |
| 49 | 63 | 不同路径 II | 62 | LeetCode |
| 50 | 64 | 最小路径和 | 58 | LeetCode |
| 51 | 120 | 三角形最小路径和 | 55 | LeetCode |
| 52 | 152 | 乘积最大子数组 | 52 | LeetCode |
| 53 | 198 | 打家劫舍 | 48 | LeetCode |
| 54 | 213 | 打家劫舍 II | 45 | LeetCode |
| 55 | 337 | 打家劫舍 III | 42 | LeetCode |
| 56 | 279 | 完全平方数 | 38 | LeetCode |
| 57 | 322 | 零钱兑换 | 35 | LeetCode |
| 58 | 518 | 零钱兑换 II | 32 | LeetCode |
| 59 | 416 | 分割等和子集 | 28 | LeetCode |
| 60 | 474 | 一和零 | 25 | LeetCode |
| 61 | 494 | 目标和 | 22 | LeetCode |
| 62 | 139 | 单词拆分 | 18 | LeetCode |
| 63 | 140 | 单词拆分 II | 15 | LeetCode |
| 64 | 91 | 解码方法 | 12 | LeetCode |
| 65 | 509 | 斐波那契数 | 10 | LeetCode |
| 66 | 70 | 爬楼梯 | 8 | LeetCode |
| 67 | 221 | 最大正方形 | 8 | LeetCode |
| 68 | 113 | 路径总和 II | 8 | LeetCode |
| 69 | 437 | 路径总和 III | 8 | LeetCode |
| 70 | 112 | 路径总和 | 8 | LeetCode |
| 71 | 101 | 对称二叉树 | 8 | LeetCode |
| 72 | 104 | 二叉树的最大深度 | 8 | LeetCode |
| 73 | 111 | 二叉树的最小深度 | 8 | LeetCode |
| 74 | 226 | 翻转二叉树 | 8 | LeetCode |
| 75 | 257 | 二叉树的所有路径 | 8 | LeetCode |
| 76 | 129 | 求根到叶子节点数字之和 | 8 | LeetCode |
| 77 | 110 | 平衡二叉树 | 8 | LeetCode |
| 78 | 543 | 二叉树的直径 | 8 | LeetCode |
| 79 | 617 | 合并二叉树 | 8 | LeetCode |
| 80 | 404 | 左叶子之和 | 8 | LeetCode |
| 81 | 24 | 两两交换链表中的节点 | 8 | LeetCode |
| 82 | 86 | 分隔链表 | 8 | LeetCode |
| 83 | 83 | 删除排序链表中的重复元素 | 8 | LeetCode |
| 84 | 61 | 旋转链表 | 8 | LeetCode |
| 85 | 138 | 复制带随机指针的链表 | 8 | LeetCode |
| 86 | 234 | 回文链表 | 8 | LeetCode |
| 87 | 237 | 删除链表中的节点 | 8 | LeetCode |
| 88 | 328 | 奇偶链表 | 8 | LeetCode |
| 89 | 155 | 最小栈 | 8 | LeetCode |
| 90 | 225 | 用队列实现栈 | 8 | LeetCode |
| 91 | 232 | 用栈实现队列 | 8 | LeetCode |
| 92 | 344 | 反转字符串 | 8 | LeetCode |
| 93 | 151 | 翻转字符串里的单词 | 8 | LeetCode |
| 94 | 557 | 反转字符串中的单词 III | 8 | LeetCode |
| 95 | 14 | 最长公共前缀 | 8 | LeetCode |
| 96 | 43 | 字符串相乘 | 8 | LeetCode |
| 97 | 415 | 字符串相加 | 8 | LeetCode |
| 98 | 6 | Z 字形变换 | 8 | LeetCode |
| 99 | 189 | 轮转数组 | 8 | LeetCode |
| 100 | 41 | 缺失的第一个正数 | 8 | LeetCode |
| 101 | 59 | 螺旋矩阵 II | 8 | LeetCode |
| 102 | 73 | 矩阵置零 | 8 | LeetCode |
| 103 | 74 | 搜索二维矩阵 | 8 | LeetCode |
| 104 | 240 | 搜索二维矩阵 II | 8 | LeetCode |
| 105 | 34 | 在排序数组中查找元素的第一个和最后一个位置 | 8 | LeetCode |
| 106 | 35 | 搜索插入位置 | 8 | LeetCode |
| 107 | 278 | 第一个错误的版本 | 8 | LeetCode |
| 108 | 81 | 搜索旋转排序数组 II | 8 | LeetCode |
| 109 | 153 | 寻找旋转排序数组中的最小值 | 8 | LeetCode |
| 110 | 162 | 寻找峰值 | 8 | LeetCode |
| 111 | 128 | 最长连续序列 | 8 | LeetCode |
| 112 | 134 | 加油站 | 8 | LeetCode |
| 113 | 135 | 分发糖果 | 8 | LeetCode |
| 114 | 179 | 最大数 | 8 | LeetCode |
| 115 | 238 | 除自身以外数组的乘积 | 8 | LeetCode |
| 116 | 169 | 多数元素 | 8 | LeetCode |
| 117 | 229 | 多数元素 II | 8 | LeetCode |
| 118 | 136 | 只出现一次的数字 | 8 | LeetCode |
| 119 | 137 | 只出现一次的数字 II | 8 | LeetCode |
| 120 | 260 | 只出现一次的数字 III | 8 | LeetCode |
| 121 | 191 | 位1的个数 | 8 | LeetCode |
| 122 | 231 | 2的幂 | 8 | LeetCode |
| 123 | 342 | 4的幂 | 8 | LeetCode |
| 124 | 190 | 颠倒二进制位 | 8 | LeetCode |
| 125 | 268 | 丢失的数字 | 8 | LeetCode |
| 126 | 389 | 找不同 | 8 | LeetCode |
| 127 | 448 | 找到所有数组中消失的数字 | 8 | LeetCode |
| 128 | 645 | 错误的集合 | 8 | LeetCode |
| 129 | 697 | 数组的度 | 8 | LeetCode |
| 130 | 565 | 数组嵌套 | 8 | LeetCode |
| 131 | 697 | 数组的度 | 8 | LeetCode |
| 132 | 769 | 最多能完成排序的块 | 8 | LeetCode |
| 133 | 238 | 除自身以外数组的乘积 | 8 | LeetCode |
| 134 | 239 | 滑动窗口最大值 | 8 | LeetCode |
| 135 | 209 | 长度最小的子数组 | 8 | LeetCode |
| 136 | 438 | 找到字符串中所有字母异位词 | 8 | LeetCode |
| 137 | 567 | 字符串的排列 | 8 | LeetCode |
| 138 | 76 | 最小覆盖子串 | 8 | LeetCode |
| 139 | 3 | 无重复字符的最长子串 | 8 | LeetCode |
| 140 | 340 | 至多包含 K 个不同字符的最长子串 | 8 | LeetCode |
| 141 | 424 | 替换后的最长重复字符 | 8 | LeetCode |
| 142 | 1650 | 二叉树的序列化与反序列化 | 8 | LeetCode |
| 143 | 297 | 二叉树的序列化与反序列化 | 8 | LeetCode |
| 144 | 208 | 实现 Trie (前缀树) | 8 | LeetCode |
| 145 | 677 | 键值映射 | 8 | LeetCode |
| 146 | 587 | 安装栅栏 | 8 | LeetCode |
| 147 | 355 | 设计推特 | 8 | LeetCode |
| 148 | 380 | O(1) 时间插入、删除和获取随机元素 | 8 | LeetCode |
| 149 | 381 | O(1) 时间插入、删除和获取随机元素 - 允许重复 | 8 | LeetCode |
| 150 | 460 | LFU 缓存 | 8 | LeetCode |
简单题目(基础必备)
| 排名 | 题号 | 题目名称 | 频度 | 链接 |
|---|---|---|---|---|
| 1 | 206 | 反转链表 | 739 | LeetCode |
| 2 | 21 | 合并两个有序链表 | 328 | LeetCode |
| 3 | 1 | 两数之和 | 298 | LeetCode |
| 4 | 88 | 合并两个有序数组 | 293 | LeetCode |
| 5 | 20 | 有效的括号 | 287 | LeetCode |
| 6 | 121 | 买卖股票的最佳时机 | 276 | LeetCode |
| 7 | 141 | 环形链表 | 247 | LeetCode |
| 8 | 415 | 字符串相加 | 222 | LeetCode |
| 9 | 160 | 相交链表 | 198 | LeetCode |
| 10 | 232 | 用栈实现队列 | 140 | LeetCode |
| 11 | 704 | 二分查找 | 140 | LeetCode |
| 12 | 94 | 二叉树的中序遍历 | 139 | LeetCode |
| 13 | 69 | x 的平方根 | 138 | LeetCode |
| 14 | 112 | 路径总和 | 135 | LeetCode |
| 15 | 104 | 二叉树的最大深度 | 132 | LeetCode |
| 16 | 144 | 二叉树的前序遍历 | 130 | LeetCode |
| 17 | 101 | 对称二叉树 | 128 | LeetCode |
| 18 | 226 | 翻转二叉树 | 125 | LeetCode |
| 19 | 543 | 二叉树的直径 | 122 | LeetCode |
| 20 | 617 | 合并二叉树 | 118 | LeetCode |
| 21 | 234 | 回文链表 | 115 | LeetCode |
| 22 | 110 | 平衡二叉树 | 112 | LeetCode |
| 23 | 108 | 将有序数组转换为二叉搜索树 | 108 | LeetCode |
| 24 | 169 | 多数元素 | 105 | LeetCode |
| 25 | 278 | 第一个错误的版本 | 102 | LeetCode |
| 26 | 70 | 爬楼梯 | 98 | LeetCode |
| 27 | 100 | 相同的树 | 95 | LeetCode |
| 28 | 111 | 二叉树的最小深度 | 92 | LeetCode |
| 29 | 136 | 只出现一次的数字 | 88 | LeetCode |
| 30 | 202 | 快乐数 | 85 | LeetCode |
| 31 | 344 | 反转字符串 | 82 | LeetCode |
| 32 | 412 | Fizz Buzz | 78 | LeetCode |
| 33 | 204 | 计数质数 | 75 | LeetCode |
| 34 | 283 | 移动零 | 72 | LeetCode |
| 35 | 168 | Excel表列名称 | 68 | LeetCode |
| 36 | 171 | Excel 表列序号 | 65 | LeetCode |
| 37 | 13 | 罗马数字转整数 | 62 | LeetCode |
| 38 | 14 | 最长公共前缀 | 58 | LeetCode |
| 39 | 9 | 回文数 | 55 | LeetCode |
| 40 | 58 | 最后一个单词的长度 | 52 | LeetCode |
| 41 | 28 | 找出字符串中第一个匹配项的下标 | 48 | LeetCode |
| 42 | 14 | 最长公共前缀 | 45 | LeetCode |
| 43 | 67 | 二进制求和 | 42 | LeetCode |
| 44 | 125 | 验证回文串 | 38 | LeetCode |
| 45 | 344 | 反转字符串 | 35 | LeetCode |
| 46 | 509 | 斐波那契数 | 32 | LeetCode |
| 47 | 404 | 左叶子之和 | 28 | LeetCode |
| 48 | 437 | 路径总和 III | 25 | LeetCode |
| 49 | 257 | 二叉树的所有路径 | 22 | LeetCode |
| 50 | 543 | 二叉树的直径 | 18 | LeetCode |
| 51 | 129 | 求根到叶子节点数字之和 | 15 | LeetCode |
| 52 | 563 | 二叉树的坡度 | 12 | LeetCode |
| 53 | 671 | 二叉树中第二小的节点 | 10 | LeetCode |
| 54 | 687 | 最长同值路径 | 8 | LeetCode |
| 55 | 226 | 翻转二叉树 | 8 | LeetCode |
| 56 | 100 | 相同的树 | 8 | LeetCode |
| 57 | 101 | 对称二叉树 | 8 | LeetCode |
| 58 | 572 | 另一个树的子树 | 8 | LeetCode |
| 59 | 508 | 出现次数最多的子树元素和 | 8 | LeetCode |
| 60 | 404 | 左叶子之和 | 8 | LeetCode |
| 61 | 112 | 路径总和 | 8 | LeetCode |
| 62 | 113 | 路径总和 II | 8 | LeetCode |
| 63 | 437 | 路径总和 III | 8 | LeetCode |
| 64 | 257 | 二叉树的所有路径 | 8 | LeetCode |
| 65 | 129 | 求根到叶子节点数字之和 | 8 | LeetCode |
| 66 | 235 | 二叉搜索树的最近公共祖先 | 8 | LeetCode |
| 67 | 236 | 二叉树的最近公共祖先 | 8 | LeetCode |
| 68 | 701 | 二叉搜索树中的插入操作 | 8 | LeetCode |
| 69 | 450 | 删除二叉搜索树中的节点 | 8 | LeetCode |
| 70 | 108 | 将有序数组转换为二叉搜索树 | 8 | LeetCode |
| 71 | 109 | 有序链表转换二叉搜索树 | 8 | LeetCode |
| 72 | 110 | 平衡二叉树 | 8 | LeetCode |
| 73 | 617 | 合并二叉树 | 8 | LeetCode |
| 74 | 543 | 二叉树的直径 | 8 | LeetCode |
| 75 | 104 | 二叉树的最大深度 | 8 | LeetCode |
| 76 | 111 | 二叉树的最小深度 | 8 | LeetCode |
| 77 | 559 | N 叉树的最大深度 | 8 | LeetCode |
| 78 | 690 | 员工的重要性 | 8 | LeetCode |
| 79 | 733 | 图像渲染 | 8 | LeetCode |
| 80 | 695 | 岛屿的最大面积 | 8 | LeetCode |
| 81 | 463 | 岛屿的周长 | 8 | LeetCode |
| 82 | 130 | 被围绕的区域 | 8 | LeetCode |
| 83 | 417 | 太平洋大西洋水流问题 | 8 | LeetCode |
| 84 | 827 | 最大人工岛 | 8 | LeetCode |
| 85 | 841 | 钥匙和房间 | 8 | LeetCode |
| 86 | 994 | 腐烂的橘子 | 8 | LeetCode |
| 87 | 542 | 01 矩阵 | 8 | LeetCode |
| 88 | 529 | 扫雷游戏 | 8 | LeetCode |
| 89 | 24 | 两两交换链表中的节点 | 8 | LeetCode |
| 90 | 83 | 删除排序链表中的重复元素 | 8 | LeetCode |
| 91 | 203 | 移除链表元素 | 8 | LeetCode |
| 92 | 82 | 删除排序链表中的重复元素 II | 8 | LeetCode |
| 93 | 19 | 删除链表的倒数第 N 个结点 | 8 | LeetCode |
| 94 | 61 | 旋转链表 | 8 | LeetCode |
| 95 | 206 | 反转链表 | 8 | LeetCode |
备注
-
频度说明:频度数据来自 CodeTop 网站,反映各公司在面试中考察该题目的次数,频度越高说明考察概率越大。
-
难度说明:
- 简单:基础数据结构与算法知识,是面试的门槛
- 中等:需要一定技巧和理解的题目,是面试的核心
- 困难:高难度算法题,通常是大厂技术面或终面的考察重点
-
刷题建议:
- 先刷高频简单题打牢基础
- 重点掌握中等难度的核心题型
- 困难题根据目标公司针对性准备