跳至主要內容

面试高频 200 题


数组

题号标题题解标签难度频次
0189轮转数组open in new windowJSopen in new window数组 数学 双指针26
0498对角线遍历open in new windowJSopen in new window数组 矩阵 模拟43
0048旋转图像open in new windowJSopen in new window数组 数学 矩阵70
0054螺旋矩阵open in new windowJSopen in new window数组 矩阵 模拟186
0059螺旋矩阵 IIopen in new windowJSopen in new window数组 矩阵 模拟36

链表

题号标题题解标签难度频次
0083删除排序链表中的重复元素open in new windowJSopen in new window链表54
0082删除排序链表中的重复元素 IIopen in new windowJSopen in new window链表 双指针117
0206反转链表open in new windowJSopen in new window递归 链表575
0092反转链表 IIopen in new windowJSopen in new window链表184
0025K 个一组翻转链表open in new windowJSopen in new window递归 链表332
0328奇偶链表open in new windowJSopen in new window链表28
0234回文链表open in new windowJSopen in new window 递归 链表 1+65
0138复制带随机指针的链表open in new windowJSopen in new window哈希表 链表47
0061旋转链表open in new windowJSopen in new window链表 双指针38

  • 栈基础
题号标题题解标签难度频次
1047删除字符串中的所有相邻重复项open in new windowJSopen in new window 字符串21
0155最小栈open in new windowJSopen in new window 设计84
0020有效的括号open in new windowJSopen in new window 字符串207
0224基本计算器open in new windowJSopen in new window 递归 数学 1+43
0227基本计算器 IIopen in new window 数学 字符串54
0232用栈实现队列open in new windowJSopen in new window 设计 队列120
剑指 Offer 09用两个栈实现队列open in new windowJSopen in new window 设计 队列44
0394字符串解码open in new windowJSopen in new window 递归 字符串66
0032最长有效括号open in new window 字符串 动态规划81
0739每日温度open in new windowJSopen in new window 数组 单调栈46
0071简化路径open in new windowJSopen in new window 字符串21
  • 单调栈
题号标题题解标签难度频次
0739每日温度open in new windowJSopen in new window 数组 单调栈46
0503下一个更大元素 IIopen in new windowJSopen in new window 数组 单调栈16
0042接雨水open in new windowJSopen in new window 数组 双指针 2+147
0085最大矩形open in new window 数组 动态规划 2+21

队列

  • 队列基础
题号标题题解标签难度频次
0225用队列实现栈open in new windowJSopen in new window 设计 队列29
  • 优先队列
题号标题题解标签难度频次
0347前 K 个高频元素open in new windowJSopen in new window数组 哈希表 分治 5+25
0239滑动窗口最大值open in new window队列 数组 滑动窗口 2+98
0295数据流的中位数open in new window设计 双指针 数据流 2+26
0023合并 K 个升序链表open in new windowJSopen in new window链表 分治 堆(优先队列) 1+173

哈希表

题号标题题解标签难度频次
0001两数之和open in new windowJSopen in new window数组 哈希表232
0015三数之和open in new windowJSopen in new window数组 双指针 排序310
0041缺失的第一个正数open in new windowJSopen in new window数组 哈希表97
0128最长连续序列open in new windowJSopen in new window并查集 数组 哈希表56
0136只出现一次的数字open in new windowJSopen in new window位运算 数组45
0242有效的字母异位词open in new windowJSopen in new window哈希表 字符串 排序17
0442数组中重复的数据open in new windowJSopen in new window数组 哈希表19
剑指 Offer 61扑克牌中的顺子open in new windowJSopen in new window数组 排序21
0268丢失的数字open in new windowJSopen in new window位运算 数组 哈希表 3+16
剑指 Offer 03数组中重复的数字open in new windowJSopen in new window数组 哈希表 排序16

字符串

  • 字符串基础
题号标题题解标签难度频次
0125验证回文串open in new windowJSopen in new window双指针 字符串29
0005最长回文子串open in new windowJSopen in new window字符串 动态规划222
0003无重复字符的最长子串open in new windowJSopen in new window哈希表 字符串 滑动窗口642
0344反转字符串open in new windowJSopen in new window双指针 字符串17
0557反转字符串中的单词 IIIopen in new window双指针 字符串17
0415字符串相加open in new window数学 字符串 模拟166
0151反转字符串中的单词open in new windowJSopen in new window双指针 字符串81
0043字符串相乘open in new window数学 字符串 模拟82
0014最长公共前缀open in new windowJSopen in new window字典树 字符串58
  • 单模式串匹配
题号标题题解标签难度频次
0459重复的子字符串open in new window字符串 字符串匹配18
  • 字典树
题号标题题解标签难度频次
0208实现 Trie (前缀树)open in new window设计 字典树 哈希表 1+27
0440字典序的第K小数字open in new window字典树33

  • 二叉树的遍历
题号标题题解标签难度频次
0144二叉树的前序遍历open in new windowJSopen in new window 深度优先搜索 1+78
0094二叉树的中序遍历open in new windowJSopen in new window 深度优先搜索 1+124
0145二叉树的后序遍历open in new windowJSopen in new window 深度优先搜索 1+36
0102二叉树的层序遍历open in new windowJSopen in new window 广度优先搜索 二叉树220
0103二叉树的锯齿形层序遍历open in new windowJSopen in new window 广度优先搜索 二叉树200
0104二叉树的最大深度open in new windowJSopen in new window 深度优先搜索 广度优先搜索 1+77
0111二叉树的最小深度open in new windowJSopen in new window 深度优先搜索 广度优先搜索 1+20
0124二叉树中的最大路径和open in new window 深度优先搜索 动态规划 1+129
0101对称二叉树open in new windowJSopen in new window 深度优先搜索 广度优先搜索 1+76
0112路径总和open in new windowJSopen in new window 深度优先搜索 广度优先搜索 1+65
0113路径总和 IIopen in new windowJSopen in new window 深度优先搜索 回溯 1+69
0236二叉树的最近公共祖先open in new windowJSopen in new window 深度优先搜索 二叉树199
0199二叉树的右视图open in new windowJSopen in new window 深度优先搜索 广度优先搜索 1+118
0226翻转二叉树open in new windowJSopen in new window 深度优先搜索 广度优先搜索 1+59
0958二叉树的完全性检验open in new windowJSopen in new window 广度优先搜索 二叉树42
0572另一棵树的子树open in new windowJSopen in new window 深度优先搜索 二叉树 2+28
0100相同的树open in new windowJSopen in new window 深度优先搜索 广度优先搜索 1+16
0297二叉树的序列化与反序列化open in new windowJSopen in new window 深度优先搜索 广度优先搜索 3+49
0114二叉树展开为链表open in new windowJSopen in new window 深度优先搜索 2+28
  • 二叉树的还原
题号标题题解标签难度频次
0105从前序与中序遍历序列构造二叉树open in new windowJSopen in new window 数组 哈希表 2+84
0106从中序与后序遍历序列构造二叉树open in new windowJSopen in new window 数组 哈希表 2+25
  • 二叉搜索树
题号标题题解标签难度频次
0098验证二叉搜索树open in new windowJSopen in new window 深度优先搜索 二叉搜索树 1+71
0450删除二叉搜索树中的节点open in new windowJSopen in new window 二叉搜索树 二叉树33
剑指 Offer 54二叉搜索树的第k大节点open in new windowJSopen in new window 深度优先搜索 二叉搜索树 1+37
0230二叉搜索树中第K小的元素open in new windowJSopen in new window 深度优先搜索 二叉搜索树 1+31
0426将二叉搜索树转化为排序的双向链表open in new windowJSopen in new window 深度优先搜索 4+16
0110平衡二叉树open in new windowJSopen in new window 深度优先搜索 二叉树77
  • 并查集
题号标题题解标签难度频次
0128最长连续序列open in new windowJSopen in new window并查集 数组 哈希表56

  • 图的深度优先搜索
题号标题题解标签难度频次
0200岛屿数量open in new window深度优先搜索 广度优先搜索 并查集 2+211
0695岛屿的最大面积open in new window深度优先搜索 广度优先搜索 并查集 2+56
0144二叉树的前序遍历open in new windowJSopen in new window 深度优先搜索 1+78
0094二叉树的中序遍历open in new windowJSopen in new window 深度优先搜索 1+124
0145二叉树的后序遍历open in new windowJSopen in new window 深度优先搜索 1+36
0129求根节点到叶节点数字之和open in new windowJSopen in new window 深度优先搜索 二叉树76
0124二叉树中的最大路径和open in new window 深度优先搜索 动态规划 1+129
0199二叉树的右视图open in new windowJSopen in new window 深度优先搜索 广度优先搜索 1+118
0543二叉树的直径open in new windowJSopen in new window 深度优先搜索 二叉树74
0662二叉树最大宽度open in new window 深度优先搜索 广度优先搜索 1+57
0958二叉树的完全性检验open in new windowJSopen in new window 广度优先搜索 二叉树42
0572另一棵树的子树open in new windowJSopen in new window 深度优先搜索 二叉树 2+28
0100相同的树open in new windowJSopen in new window 深度优先搜索 广度优先搜索 1+16
0111二叉树的最小深度open in new windowJSopen in new window 深度优先搜索 广度优先搜索 1+20
  • 图的广度优先搜索
题号标题题解标签难度频次
0200岛屿数量open in new window深度优先搜索 广度优先搜索 并查集 2+211
0322零钱兑换open in new windowJSopen in new window广度优先搜索 数组 动态规划84
0207课程表open in new window深度优先搜索 广度优先搜索 1+43
0199二叉树的右视图open in new windowJSopen in new window 深度优先搜索 广度优先搜索 1+118
0662二叉树最大宽度open in new window 深度优先搜索 广度优先搜索 1+57
0958二叉树的完全性检验open in new windowJSopen in new window 广度优先搜索 二叉树42
0572另一棵树的子树open in new windowJSopen in new window 深度优先搜索 二叉树 2+28
0100相同的树open in new windowJSopen in new window 深度优先搜索 广度优先搜索 1+16
0111二叉树的最小深度open in new windowJSopen in new window 深度优先搜索 广度优先搜索 1+20
剑指 Offer 32 - III从上到下打印二叉树 IIIopen in new windowJSopen in new window 广度优先搜索 二叉树16
  • 图的拓扑排序
题号标题题解标签难度频次
0210课程表 IIopen in new window深度优先搜索 广度优先搜索 1+19

枚举算法

题号标题题解标签难度频次
0001两数之和open in new windowJSopen in new window数组 哈希表232
0078子集open in new windowJSopen in new window位运算 数组 回溯85
0221最大正方形open in new windowJSopen in new window数组 动态规划 矩阵68
0560和为 K 的子数组open in new window数组 哈希表 前缀和49

递归算法

题号标题题解标签难度频次
0024两两交换链表中的节点open in new windowJSopen in new window递归 链表50
0206反转链表open in new windowJSopen in new window递归 链表575
0092反转链表 IIopen in new windowJSopen in new window链表184
0021合并两个有序链表open in new windowJSopen in new window递归 链表242
0509斐波那契数open in new windowJSopen in new window递归 记忆化搜索 数学 1+19
0070爬楼梯open in new windowJSopen in new window记忆化搜索 数学 动态规划109
0104二叉树的最大深度open in new windowJSopen in new window 深度优先搜索 广度优先搜索 1+77
0124二叉树中的最大路径和open in new window 深度优先搜索 动态规划 1+129
0226翻转二叉树open in new windowJSopen in new window 深度优先搜索 广度优先搜索 1+59
剑指 Offer 62圆圈中最后剩下的数字open in new window递归 数学30

分治算法

题号标题题解标签难度频次
0004寻找两个正序数组的中位数open in new windowJSopen in new window数组 二分查找 分治117
0023合并 K 个升序链表open in new windowJSopen in new window链表 分治 堆(优先队列) 1+173
0053最大子数组和open in new windowJSopen in new window数组 分治 动态规划261
0169多数元素open in new windowJSopen in new window数组 哈希表 分治 2+61
0014最长公共前缀open in new windowJSopen in new window字典树 字符串58
剑指 Offer 33二叉搜索树的后序遍历序列open in new windowJSopen in new window 二叉搜索树 3+16

回溯算法

题号标题题解标签难度频次
0046全排列open in new windowJSopen in new window数组 回溯202
0047全排列 IIopen in new windowJSopen in new window数组 回溯40
0037解数独open in new window数组 哈希表 回溯 1+18
0022括号生成open in new windowJSopen in new window字符串 动态规划 回溯105
0078子集open in new windowJSopen in new window位运算 数组 回溯85
0039组合总和open in new windowJSopen in new window数组 回溯68
0040组合总和 IIopen in new windowJSopen in new window数组 回溯35
0093复原 IP 地址open in new windowJSopen in new window字符串 回溯114
0079单词搜索open in new windowJSopen in new window数组 回溯 矩阵38
067924 点游戏open in new window数组 数学 回溯21

贪心算法

题号标题题解标签难度频次
0053最大子数组和open in new windowJSopen in new window数组 分治 动态规划261
0056合并区间open in new window数组 排序125
0122买卖股票的最佳时机 IIopen in new windowJSopen in new window贪心 数组56
0055跳跃游戏open in new windowJSopen in new window贪心 数组 动态规划38
0402移掉 K 位数字open in new window 贪心 字符串 1+44
0135分发糖果open in new windowJSopen in new window贪心 数组29
0134加油站open in new windowJSopen in new window贪心 数组20
0670最大交换open in new window贪心 数学17

动态规划

题号标题题解标签难度频次
0070爬楼梯open in new windowJSopen in new window记忆化搜索 数学 动态规划109
0509斐波那契数open in new windowJSopen in new window递归 记忆化搜索 数学 1+19
0121买卖股票的最佳时机open in new windowJSopen in new window数组 动态规划211
0322零钱兑换open in new windowJSopen in new window广度优先搜索 数组 动态规划84
0518零钱兑换 IIopen in new windowJSopen in new window数组 动态规划35
0300最长递增子序列open in new windowJSopen in new window数组 二分查找 动态规划163
1143最长公共子序列open in new windowJSopen in new window字符串 动态规划120
0718最长重复子数组open in new window数组 二分查找 动态规划 3+60
0064最小路径和open in new windowJSopen in new window数组 动态规划 矩阵68
0072编辑距离open in new windowJSopen in new window字符串 动态规划127
0032最长有效括号open in new window 字符串 动态规划81
0221最大正方形open in new windowJSopen in new window数组 动态规划 矩阵68
0062不同路径open in new windowJSopen in new window数学 动态规划 组合数学55
0063不同路径 IIopen in new windowJSopen in new window数组 动态规划 矩阵18
0152乘积最大子数组open in new windowJSopen in new window数组 动态规划55
0198打家劫舍open in new windowJSopen in new window数组 动态规划51
0213打家劫舍 IIopen in new window数组 动态规划25
0091解码方法open in new window字符串 动态规划28
0010正则表达式匹配open in new windowJSopen in new window递归 字符串 动态规划26
0678有效的括号字符串open in new windowJSopen in new window 贪心 字符串 1+21
0045跳跃游戏 IIopen in new windowJSopen in new window贪心 数组 动态规划31
0673最长递增子序列的个数open in new window树状数组 线段树 数组 1+19
0139单词拆分open in new windowJSopen in new window字典树 记忆化搜索 数组 3+52
0044通配符匹配open in new windowJSopen in new window贪心 递归 字符串 1+19
0120三角形最小路径和open in new windowJSopen in new window数组 动态规划23
0096不同的二叉搜索树open in new windowJSopen in new window 二叉搜索树 数学 2+24
0887鸡蛋掉落open in new window数学 二分查找 动态规划21
0097交错字符串open in new window字符串 动态规划17
0516最长回文子序列open in new windowJSopen in new window字符串 动态规划17
0329矩阵中的最长递增路径open in new window深度优先搜索 广度优先搜索 5+28

位运算

题号标题题解标签难度频次
0136只出现一次的数字open in new windowJSopen in new window位运算 数组45
0191位1的个数open in new windowJSopen in new window位运算 分治17
0268丢失的数字open in new windowJSopen in new window位运算 数组 哈希表 3+16

排序算法

  • 冒泡排序
题号标题题解标签难度频次
0283移动零open in new windowJSopen in new window数组 双指针49
  • 选择排序
题号标题题解标签难度频次
0215数组中的第K个最大元素open in new windowJSopen in new window数组 分治 快速选择 2+420
  • 插入排序
题号标题题解标签难度频次
0075颜色分类open in new window数组 双指针 排序33
  • 希尔排序
题号标题题解标签难度频次
0912排序数组open in new window数组 分治 桶排序 5+16
  • 归并排序
题号标题题解标签难度频次
0912排序数组open in new window数组 分治 桶排序 5+16
0088合并两个有序数组open in new windowJSopen in new window数组 双指针 排序204
剑指 Offer 51数组中的逆序对open in new window树状数组 线段树 数组 4+37
  • 快速排序
题号标题题解标签难度频次
0912排序数组open in new window数组 分治 桶排序 5+16
0169多数元素open in new windowJSopen in new window数组 哈希表 分治 2+61
  • 堆排序
题号标题题解标签难度频次
0912排序数组open in new window数组 分治 桶排序 5+16
0215数组中的第K个最大元素open in new windowJSopen in new window数组 分治 快速选择 2+420
剑指 Offer 40最小的k个数open in new window数组 分治 快速选择 2+36
  • 计数排序
题号标题题解标签难度频次
0912排序数组open in new window数组 分治 桶排序 5+16
  • 桶排序
题号标题题解标签难度频次
0912排序数组open in new window数组 分治 桶排序 5+16
  • 基数排序
题号标题题解标签难度频次
0164最大间距open in new window数组 桶排序 基数排序 1+16
  • 其他排序
题号标题题解标签难度频次
0136只出现一次的数字open in new windowJSopen in new window位运算 数组45
0056合并区间open in new window数组 排序125
0179最大数open in new window贪心 数组 字符串 1+51
0384打乱数组open in new window数组 数学 随机化28
剑指 Offer 45把数组排成最小的数open in new window贪心 字符串 排序18
  • 链表排序
题号标题题解标签难度频次
0148排序链表open in new windowJSopen in new window链表 双指针 分治 2+111
0021合并两个有序链表open in new windowJSopen in new window递归 链表242
0023合并 K 个升序链表open in new windowJSopen in new window链表 分治 堆(优先队列) 1+173

二分查找

  • 二分下标
题号标题题解标签难度频次
0704二分查找open in new windowJSopen in new window数组 二分查找120
0034在排序数组中查找元素的第一个和最后一个位置open in new windowJSopen in new window数组 二分查找67
0153寻找旋转排序数组中的最小值open in new windowJSopen in new window数组 二分查找49
0154寻找旋转排序数组中的最小值 IIopen in new windowJSopen in new window数组 二分查找16
0033搜索旋转排序数组open in new window数组 二分查找220
0162寻找峰值open in new windowJSopen in new window数组 二分查找60
0004寻找两个正序数组的中位数open in new windowJSopen in new window数组 二分查找 分治117
0074搜索二维矩阵open in new windowJSopen in new window数组 二分查找 矩阵35
0240搜索二维矩阵 IIopen in new windowJSopen in new window数组 二分查找 分治 1+61
  • 二分答案
题号标题题解标签难度频次
0069x 的平方根open in new window数学 二分查找109
0287寻找重复数open in new window位运算 数组 双指针 1+25
0050Pow(x, n)open in new windowJSopen in new window递归 数学37
0400第 N 位数字open in new window数学 二分查找23
  • 复杂的二分查找问题
题号标题题解标签难度频次
0209长度最小的子数组open in new windowJSopen in new window数组 二分查找 前缀和 1+49
0349两个数组的交集open in new window数组 哈希表 双指针 2+22

双指针

  • 对撞指针
题号标题题解标签难度频次
0611有效三角形的个数open in new windowJSopen in new window贪心 数组 双指针 2+20
0015三数之和open in new windowJSopen in new window数组 双指针 排序310
0016最接近的三数之和open in new windowJSopen in new window数组 双指针 排序29
0125验证回文串open in new windowJSopen in new window双指针 字符串29
0011盛最多水的容器open in new windowJSopen in new window贪心 数组 双指针43
0075颜色分类open in new window数组 双指针 排序33
剑指 Offer 21调整数组顺序使奇数位于偶数前面open in new windowJSopen in new window数组 双指针 排序30
0443压缩字符串open in new window双指针 字符串18
  • 快慢指针
题号标题题解标签难度频次
0026删除有序数组中的重复项open in new windowJSopen in new window数组 双指针35
0283移动零open in new windowJSopen in new window数组 双指针49
0088合并两个有序数组open in new windowJSopen in new window数组 双指针 排序204
  • 分离双指针
题号标题题解标签难度频次
0415字符串相加open in new window数学 字符串 模拟166
  • 链表双指针
题号标题题解标签难度频次
0141环形链表open in new windowJSopen in new window哈希表 链表 双指针210
0142环形链表 IIopen in new windowJSopen in new window哈希表 链表 双指针148
0160相交链表open in new windowJSopen in new window哈希表 链表 双指针176
0019删除链表的倒数第 N 个结点open in new windowJSopen in new window链表 双指针129
剑指 Offer 22链表中倒数第k个节点open in new windowJSopen in new window链表 双指针95
0143重排链表open in new windowJSopen in new window 递归 链表 1+148
0002两数相加open in new windowJSopen in new window递归 链表 数学106
0445两数相加 IIopen in new windowJSopen in new window 链表 数学28

滑动窗口

  • 固定长度窗口
题号标题题解标签难度频次
0239滑动窗口最大值open in new window队列 数组 滑动窗口 2+98
  • 不定长度窗口
题号标题题解标签难度频次
0003无重复字符的最长子串open in new windowJSopen in new window哈希表 字符串 滑动窗口642
0076最小覆盖子串open in new windowJSopen in new window哈希表 字符串 滑动窗口87
0718最长重复子数组open in new window数组 二分查找 动态规划 3+60
0209长度最小的子数组open in new windowJSopen in new window数组 二分查找 前缀和 1+49
0862和至少为 K 的最短子数组open in new window队列 数组 二分查找 4+16
1004最大连续1的个数 IIIopen in new window数组 二分查找 前缀和 1+22

补充

  • 设计数据结构
题号标题题解标签难度频次
0146LRU 缓存open in new windowJSopen in new window设计 哈希表 链表 1+525
0460LFU 缓存open in new window设计 哈希表 链表 1+45
  • 数学
题号标题题解标签难度频次
0007整数反转open in new windowJSopen in new window数学37
0009回文数open in new windowJSopen in new window数学27
剑指 Offer 62圆圈中最后剩下的数字open in new window递归 数学30
0168Excel表列名称open in new window数学 字符串20
0400第 N 位数字open in new window数学 二分查找23
  • 模拟
题号标题题解标签难度频次
0008字符串转换整数 (atoi)open in new windowJSopen in new window字符串106
0165比较版本号open in new window双指针 字符串96
0468验证IP地址open in new window字符串48
0086分隔链表open in new windowJSopen in new window链表 双指针18
  • 前缀和
题号标题题解标签难度频次
0560和为 K 的子数组open in new window数组 哈希表 前缀和49
  • 思维锻炼
题号标题题解标签难度频次
0031下一个排列open in new window数组 双指针111
0556下一个更大元素 IIIopen in new window数学 双指针 字符串19
0470用 Rand7() 实现 Rand10()open in new window数学 拒绝采样 概率与统计 1+68