面试高频 200 题
数组
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0189 | 轮转数组 | JS | 数组 数学 双指针 | 26 | |
0498 | 对角线遍历 | JS | 数组 矩阵 模拟 | 43 | |
0048 | 旋转图像 | JS | 数组 数学 矩阵 | 70 | |
0054 | 螺旋矩阵 | JS | 数组 矩阵 模拟 | 186 | |
0059 | 螺旋矩阵 II | JS | 数组 矩阵 模拟 | 36 |
链表
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0083 | 删除排序链表中的重复元素 | JS | 链表 | 54 | |
0082 | 删除排序链表中的重复元素 II | JS | 链表 双指针 | 117 | |
0206 | 反转链表 | JS | 递归 链表 | 575 | |
0092 | 反转链表 II | JS | 链表 | 184 | |
0025 | K 个一组翻转链表 | JS | 递归 链表 | 332 | |
0328 | 奇偶链表 | JS | 链表 | 28 | |
0234 | 回文链表 | JS | 栈 递归 链表 1+ | 65 | |
0138 | 复制带随机指针的链表 | JS | 哈希表 链表 | 47 | |
0061 | 旋转链表 | JS | 链表 双指针 | 38 |
栈
- 栈基础
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
1047 | 删除字符串中的所有相邻重复项 | JS | 栈 字符串 | 21 | |
0155 | 最小栈 | JS | 栈 设计 | 84 | |
0020 | 有效的括号 | JS | 栈 字符串 | 207 | |
0224 | 基本计算器 | JS | 栈 递归 数学 1+ | 43 | |
0227 | 基本计算器 II | 栈 数学 字符串 | 54 | ||
0232 | 用栈实现队列 | JS | 栈 设计 队列 | 120 | |
剑指 Offer 09 | 用两个栈实现队列 | JS | 栈 设计 队列 | 44 | |
0394 | 字符串解码 | JS | 栈 递归 字符串 | 66 | |
0032 | 最长有效括号 | 栈 字符串 动态规划 | 81 | ||
0739 | 每日温度 | JS | 栈 数组 单调栈 | 46 | |
0071 | 简化路径 | JS | 栈 字符串 | 21 |
- 单调栈
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0739 | 每日温度 | JS | 栈 数组 单调栈 | 46 | |
0503 | 下一个更大元素 II | JS | 栈 数组 单调栈 | 16 | |
0042 | 接雨水 | JS | 栈 数组 双指针 2+ | 147 | |
0085 | 最大矩形 | 栈 数组 动态规划 2+ | 21 |
队列
- 队列基础
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0225 | 用队列实现栈 | JS | 栈 设计 队列 | 29 |
- 优先队列
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0347 | 前 K 个高频元素 | JS | 数组 哈希表 分治 5+ | 25 | |
0239 | 滑动窗口最大值 | 队列 数组 滑动窗口 2+ | 98 | ||
0295 | 数据流的中位数 | 设计 双指针 数据流 2+ | 26 | ||
0023 | 合并 K 个升序链表 | JS | 链表 分治 堆(优先队列) 1+ | 173 |
哈希表
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0001 | 两数之和 | JS | 数组 哈希表 | 232 | |
0015 | 三数之和 | JS | 数组 双指针 排序 | 310 | |
0041 | 缺失的第一个正数 | JS | 数组 哈希表 | 97 | |
0128 | 最长连续序列 | JS | 并查集 数组 哈希表 | 56 | |
0136 | 只出现一次的数字 | JS | 位运算 数组 | 45 | |
0242 | 有效的字母异位词 | JS | 哈希表 字符串 排序 | 17 | |
0442 | 数组中重复的数据 | JS | 数组 哈希表 | 19 | |
剑指 Offer 61 | 扑克牌中的顺子 | JS | 数组 排序 | 21 | |
0268 | 丢失的数字 | JS | 位运算 数组 哈希表 3+ | 16 | |
剑指 Offer 03 | 数组中重复的数字 | JS | 数组 哈希表 排序 | 16 |
字符串
- 字符串基础
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0125 | 验证回文串 | JS | 双指针 字符串 | 29 | |
0005 | 最长回文子串 | JS | 字符串 动态规划 | 222 | |
0003 | 无重复字符的最长子串 | JS | 哈希表 字符串 滑动窗口 | 642 | |
0344 | 反转字符串 | JS | 双指针 字符串 | 17 | |
0557 | 反转字符串中的单词 III | 双指针 字符串 | 17 | ||
0415 | 字符串相加 | 数学 字符串 模拟 | 166 | ||
0151 | 反转字符串中的单词 | JS | 双指针 字符串 | 81 | |
0043 | 字符串相乘 | 数学 字符串 模拟 | 82 | ||
0014 | 最长公共前缀 | JS | 字典树 字符串 | 58 |
- 单模式串匹配
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0459 | 重复的子字符串 | 字符串 字符串匹配 | 18 |
- 字典树
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0208 | 实现 Trie (前缀树) | 设计 字典树 哈希表 1+ | 27 | ||
0440 | 字典序的第K小数字 | 字典树 | 33 |
树
- 二叉树的遍历
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0144 | 二叉树的前序遍历 | JS | 栈 树 深度优先搜索 1+ | 78 | |
0094 | 二叉树的中序遍历 | JS | 栈 树 深度优先搜索 1+ | 124 | |
0145 | 二叉树的后序遍历 | JS | 栈 树 深度优先搜索 1+ | 36 | |
0102 | 二叉树的层序遍历 | JS | 树 广度优先搜索 二叉树 | 220 | |
0103 | 二叉树的锯齿形层序遍历 | JS | 树 广度优先搜索 二叉树 | 200 | |
0104 | 二叉树的最大深度 | JS | 树 深度优先搜索 广度优先搜索 1+ | 77 | |
0111 | 二叉树的最小深度 | JS | 树 深度优先搜索 广度优先搜索 1+ | 20 | |
0124 | 二叉树中的最大路径和 | 树 深度优先搜索 动态规划 1+ | 129 | ||
0101 | 对称二叉树 | JS | 树 深度优先搜索 广度优先搜索 1+ | 76 | |
0112 | 路径总和 | JS | 树 深度优先搜索 广度优先搜索 1+ | 65 | |
0113 | 路径总和 II | JS | 树 深度优先搜索 回溯 1+ | 69 | |
0236 | 二叉树的最近公共祖先 | JS | 树 深度优先搜索 二叉树 | 199 | |
0199 | 二叉树的右视图 | JS | 树 深度优先搜索 广度优先搜索 1+ | 118 | |
0226 | 翻转二叉树 | JS | 树 深度优先搜索 广度优先搜索 1+ | 59 | |
0958 | 二叉树的完全性检验 | JS | 树 广度优先搜索 二叉树 | 42 | |
0572 | 另一棵树的子树 | JS | 树 深度优先搜索 二叉树 2+ | 28 | |
0100 | 相同的树 | JS | 树 深度优先搜索 广度优先搜索 1+ | 16 | |
0297 | 二叉树的序列化与反序列化 | JS | 树 深度优先搜索 广度优先搜索 3+ | 49 | |
0114 | 二叉树展开为链表 | JS | 栈 树 深度优先搜索 2+ | 28 |
- 二叉树的还原
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0105 | 从前序与中序遍历序列构造二叉树 | JS | 树 数组 哈希表 2+ | 84 | |
0106 | 从中序与后序遍历序列构造二叉树 | JS | 树 数组 哈希表 2+ | 25 |
- 二叉搜索树
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0098 | 验证二叉搜索树 | JS | 树 深度优先搜索 二叉搜索树 1+ | 71 | |
0450 | 删除二叉搜索树中的节点 | JS | 树 二叉搜索树 二叉树 | 33 | |
剑指 Offer 54 | 二叉搜索树的第k大节点 | JS | 树 深度优先搜索 二叉搜索树 1+ | 37 | |
0230 | 二叉搜索树中第K小的元素 | JS | 树 深度优先搜索 二叉搜索树 1+ | 31 | |
0426 | 将二叉搜索树转化为排序的双向链表 | JS | 栈 树 深度优先搜索 4+ | 16 | |
0110 | 平衡二叉树 | JS | 树 深度优先搜索 二叉树 | 77 |
- 并查集
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0128 | 最长连续序列 | JS | 并查集 数组 哈希表 | 56 |
图
- 图的深度优先搜索
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0200 | 岛屿数量 | 深度优先搜索 广度优先搜索 并查集 2+ | 211 | ||
0695 | 岛屿的最大面积 | 深度优先搜索 广度优先搜索 并查集 2+ | 56 | ||
0144 | 二叉树的前序遍历 | JS | 栈 树 深度优先搜索 1+ | 78 | |
0094 | 二叉树的中序遍历 | JS | 栈 树 深度优先搜索 1+ | 124 | |
0145 | 二叉树的后序遍历 | JS | 栈 树 深度优先搜索 1+ | 36 | |
0129 | 求根节点到叶节点数字之和 | JS | 树 深度优先搜索 二叉树 | 76 | |
0124 | 二叉树中的最大路径和 | 树 深度优先搜索 动态规划 1+ | 129 | ||
0199 | 二叉树的右视图 | JS | 树 深度优先搜索 广度优先搜索 1+ | 118 | |
0543 | 二叉树的直径 | JS | 树 深度优先搜索 二叉树 | 74 | |
0662 | 二叉树最大宽度 | 树 深度优先搜索 广度优先搜索 1+ | 57 | ||
0958 | 二叉树的完全性检验 | JS | 树 广度优先搜索 二叉树 | 42 | |
0572 | 另一棵树的子树 | JS | 树 深度优先搜索 二叉树 2+ | 28 | |
0100 | 相同的树 | JS | 树 深度优先搜索 广度优先搜索 1+ | 16 | |
0111 | 二叉树的最小深度 | JS | 树 深度优先搜索 广度优先搜索 1+ | 20 |
- 图的广度优先搜索
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0200 | 岛屿数量 | 深度优先搜索 广度优先搜索 并查集 2+ | 211 | ||
0322 | 零钱兑换 | JS | 广度优先搜索 数组 动态规划 | 84 | |
0207 | 课程表 | 深度优先搜索 广度优先搜索 图 1+ | 43 | ||
0199 | 二叉树的右视图 | JS | 树 深度优先搜索 广度优先搜索 1+ | 118 | |
0662 | 二叉树最大宽度 | 树 深度优先搜索 广度优先搜索 1+ | 57 | ||
0958 | 二叉树的完全性检验 | JS | 树 广度优先搜索 二叉树 | 42 | |
0572 | 另一棵树的子树 | JS | 树 深度优先搜索 二叉树 2+ | 28 | |
0100 | 相同的树 | JS | 树 深度优先搜索 广度优先搜索 1+ | 16 | |
0111 | 二叉树的最小深度 | JS | 树 深度优先搜索 广度优先搜索 1+ | 20 | |
剑指 Offer 32 - III | 从上到下打印二叉树 III | JS | 树 广度优先搜索 二叉树 | 16 |
- 图的拓扑排序
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0210 | 课程表 II | 深度优先搜索 广度优先搜索 图 1+ | 19 |
枚举算法
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0001 | 两数之和 | JS | 数组 哈希表 | 232 | |
0078 | 子集 | JS | 位运算 数组 回溯 | 85 | |
0221 | 最大正方形 | JS | 数组 动态规划 矩阵 | 68 | |
0560 | 和为 K 的子数组 | 数组 哈希表 前缀和 | 49 |
递归算法
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0024 | 两两交换链表中的节点 | JS | 递归 链表 | 50 | |
0206 | 反转链表 | JS | 递归 链表 | 575 | |
0092 | 反转链表 II | JS | 链表 | 184 | |
0021 | 合并两个有序链表 | JS | 递归 链表 | 242 | |
0509 | 斐波那契数 | JS | 递归 记忆化搜索 数学 1+ | 19 | |
0070 | 爬楼梯 | JS | 记忆化搜索 数学 动态规划 | 109 | |
0104 | 二叉树的最大深度 | JS | 树 深度优先搜索 广度优先搜索 1+ | 77 | |
0124 | 二叉树中的最大路径和 | 树 深度优先搜索 动态规划 1+ | 129 | ||
0226 | 翻转二叉树 | JS | 树 深度优先搜索 广度优先搜索 1+ | 59 | |
剑指 Offer 62 | 圆圈中最后剩下的数字 | 递归 数学 | 30 |
分治算法
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0004 | 寻找两个正序数组的中位数 | JS | 数组 二分查找 分治 | 117 | |
0023 | 合并 K 个升序链表 | JS | 链表 分治 堆(优先队列) 1+ | 173 | |
0053 | 最大子数组和 | JS | 数组 分治 动态规划 | 261 | |
0169 | 多数元素 | JS | 数组 哈希表 分治 2+ | 61 | |
0014 | 最长公共前缀 | JS | 字典树 字符串 | 58 | |
剑指 Offer 33 | 二叉搜索树的后序遍历序列 | JS | 栈 树 二叉搜索树 3+ | 16 |
回溯算法
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0046 | 全排列 | JS | 数组 回溯 | 202 | |
0047 | 全排列 II | JS | 数组 回溯 | 40 | |
0037 | 解数独 | 数组 哈希表 回溯 1+ | 18 | ||
0022 | 括号生成 | JS | 字符串 动态规划 回溯 | 105 | |
0078 | 子集 | JS | 位运算 数组 回溯 | 85 | |
0039 | 组合总和 | JS | 数组 回溯 | 68 | |
0040 | 组合总和 II | JS | 数组 回溯 | 35 | |
0093 | 复原 IP 地址 | JS | 字符串 回溯 | 114 | |
0079 | 单词搜索 | JS | 数组 回溯 矩阵 | 38 | |
0679 | 24 点游戏 | 数组 数学 回溯 | 21 |
贪心算法
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0053 | 最大子数组和 | JS | 数组 分治 动态规划 | 261 | |
0056 | 合并区间 | 数组 排序 | 125 | ||
0122 | 买卖股票的最佳时机 II | JS | 贪心 数组 | 56 | |
0055 | 跳跃游戏 | JS | 贪心 数组 动态规划 | 38 | |
0402 | 移掉 K 位数字 | 栈 贪心 字符串 1+ | 44 | ||
0135 | 分发糖果 | JS | 贪心 数组 | 29 | |
0134 | 加油站 | JS | 贪心 数组 | 20 | |
0670 | 最大交换 | 贪心 数学 | 17 |
动态规划
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0070 | 爬楼梯 | JS | 记忆化搜索 数学 动态规划 | 109 | |
0509 | 斐波那契数 | JS | 递归 记忆化搜索 数学 1+ | 19 | |
0121 | 买卖股票的最佳时机 | JS | 数组 动态规划 | 211 | |
0322 | 零钱兑换 | JS | 广度优先搜索 数组 动态规划 | 84 | |
0518 | 零钱兑换 II | JS | 数组 动态规划 | 35 | |
0300 | 最长递增子序列 | JS | 数组 二分查找 动态规划 | 163 | |
1143 | 最长公共子序列 | JS | 字符串 动态规划 | 120 | |
0718 | 最长重复子数组 | 数组 二分查找 动态规划 3+ | 60 | ||
0064 | 最小路径和 | JS | 数组 动态规划 矩阵 | 68 | |
0072 | 编辑距离 | JS | 字符串 动态规划 | 127 | |
0032 | 最长有效括号 | 栈 字符串 动态规划 | 81 | ||
0221 | 最大正方形 | JS | 数组 动态规划 矩阵 | 68 | |
0062 | 不同路径 | JS | 数学 动态规划 组合数学 | 55 | |
0063 | 不同路径 II | JS | 数组 动态规划 矩阵 | 18 | |
0152 | 乘积最大子数组 | JS | 数组 动态规划 | 55 | |
0198 | 打家劫舍 | JS | 数组 动态规划 | 51 | |
0213 | 打家劫舍 II | 数组 动态规划 | 25 | ||
0091 | 解码方法 | 字符串 动态规划 | 28 | ||
0010 | 正则表达式匹配 | JS | 递归 字符串 动态规划 | 26 | |
0678 | 有效的括号字符串 | JS | 栈 贪心 字符串 1+ | 21 | |
0045 | 跳跃游戏 II | JS | 贪心 数组 动态规划 | 31 | |
0673 | 最长递增子序列的个数 | 树状数组 线段树 数组 1+ | 19 | ||
0139 | 单词拆分 | JS | 字典树 记忆化搜索 数组 3+ | 52 | |
0044 | 通配符匹配 | JS | 贪心 递归 字符串 1+ | 19 | |
0120 | 三角形最小路径和 | JS | 数组 动态规划 | 23 | |
0096 | 不同的二叉搜索树 | JS | 树 二叉搜索树 数学 2+ | 24 | |
0887 | 鸡蛋掉落 | 数学 二分查找 动态规划 | 21 | ||
0097 | 交错字符串 | 字符串 动态规划 | 17 | ||
0516 | 最长回文子序列 | JS | 字符串 动态规划 | 17 | |
0329 | 矩阵中的最长递增路径 | 深度优先搜索 广度优先搜索 图 5+ | 28 |
位运算
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0136 | 只出现一次的数字 | JS | 位运算 数组 | 45 | |
0191 | 位1的个数 | JS | 位运算 分治 | 17 | |
0268 | 丢失的数字 | JS | 位运算 数组 哈希表 3+ | 16 |
排序算法
- 冒泡排序
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0283 | 移动零 | JS | 数组 双指针 | 49 |
- 选择排序
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0215 | 数组中的第K个最大元素 | JS | 数组 分治 快速选择 2+ | 420 |
- 插入排序
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0075 | 颜色分类 | 数组 双指针 排序 | 33 |
- 希尔排序
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0912 | 排序数组 | 数组 分治 桶排序 5+ | 16 |
- 归并排序
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0912 | 排序数组 | 数组 分治 桶排序 5+ | 16 | ||
0088 | 合并两个有序数组 | JS | 数组 双指针 排序 | 204 | |
剑指 Offer 51 | 数组中的逆序对 | 树状数组 线段树 数组 4+ | 37 |
- 快速排序
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0912 | 排序数组 | 数组 分治 桶排序 5+ | 16 | ||
0169 | 多数元素 | JS | 数组 哈希表 分治 2+ | 61 |
- 堆排序
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0912 | 排序数组 | 数组 分治 桶排序 5+ | 16 | ||
0215 | 数组中的第K个最大元素 | JS | 数组 分治 快速选择 2+ | 420 | |
剑指 Offer 40 | 最小的k个数 | 数组 分治 快速选择 2+ | 36 |
- 计数排序
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0912 | 排序数组 | 数组 分治 桶排序 5+ | 16 |
- 桶排序
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0912 | 排序数组 | 数组 分治 桶排序 5+ | 16 |
- 基数排序
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0164 | 最大间距 | 数组 桶排序 基数排序 1+ | 16 |
- 其他排序
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0136 | 只出现一次的数字 | JS | 位运算 数组 | 45 | |
0056 | 合并区间 | 数组 排序 | 125 | ||
0179 | 最大数 | 贪心 数组 字符串 1+ | 51 | ||
0384 | 打乱数组 | 数组 数学 随机化 | 28 | ||
剑指 Offer 45 | 把数组排成最小的数 | 贪心 字符串 排序 | 18 |
- 链表排序
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0148 | 排序链表 | JS | 链表 双指针 分治 2+ | 111 | |
0021 | 合并两个有序链表 | JS | 递归 链表 | 242 | |
0023 | 合并 K 个升序链表 | JS | 链表 分治 堆(优先队列) 1+ | 173 |
二分查找
- 二分下标
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0704 | 二分查找 | JS | 数组 二分查找 | 120 | |
0034 | 在排序数组中查找元素的第一个和最后一个位置 | JS | 数组 二分查找 | 67 | |
0153 | 寻找旋转排序数组中的最小值 | JS | 数组 二分查找 | 49 | |
0154 | 寻找旋转排序数组中的最小值 II | JS | 数组 二分查找 | 16 | |
0033 | 搜索旋转排序数组 | 数组 二分查找 | 220 | ||
0162 | 寻找峰值 | JS | 数组 二分查找 | 60 | |
0004 | 寻找两个正序数组的中位数 | JS | 数组 二分查找 分治 | 117 | |
0074 | 搜索二维矩阵 | JS | 数组 二分查找 矩阵 | 35 | |
0240 | 搜索二维矩阵 II | JS | 数组 二分查找 分治 1+ | 61 |
- 二分答案
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0069 | x 的平方根 | 数学 二分查找 | 109 | ||
0287 | 寻找重复数 | 位运算 数组 双指针 1+ | 25 | ||
0050 | Pow(x, n) | JS | 递归 数学 | 37 | |
0400 | 第 N 位数字 | 数学 二分查找 | 23 |
- 复杂的二分查找问题
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0209 | 长度最小的子数组 | JS | 数组 二分查找 前缀和 1+ | 49 | |
0349 | 两个数组的交集 | 数组 哈希表 双指针 2+ | 22 |
双指针
- 对撞指针
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0611 | 有效三角形的个数 | JS | 贪心 数组 双指针 2+ | 20 | |
0015 | 三数之和 | JS | 数组 双指针 排序 | 310 | |
0016 | 最接近的三数之和 | JS | 数组 双指针 排序 | 29 | |
0125 | 验证回文串 | JS | 双指针 字符串 | 29 | |
0011 | 盛最多水的容器 | JS | 贪心 数组 双指针 | 43 | |
0075 | 颜色分类 | 数组 双指针 排序 | 33 | ||
剑指 Offer 21 | 调整数组顺序使奇数位于偶数前面 | JS | 数组 双指针 排序 | 30 | |
0443 | 压缩字符串 | 双指针 字符串 | 18 |
- 快慢指针
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0026 | 删除有序数组中的重复项 | JS | 数组 双指针 | 35 | |
0283 | 移动零 | JS | 数组 双指针 | 49 | |
0088 | 合并两个有序数组 | JS | 数组 双指针 排序 | 204 |
- 分离双指针
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0415 | 字符串相加 | 数学 字符串 模拟 | 166 |
- 链表双指针
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0141 | 环形链表 | JS | 哈希表 链表 双指针 | 210 | |
0142 | 环形链表 II | JS | 哈希表 链表 双指针 | 148 | |
0160 | 相交链表 | JS | 哈希表 链表 双指针 | 176 | |
0019 | 删除链表的倒数第 N 个结点 | JS | 链表 双指针 | 129 | |
剑指 Offer 22 | 链表中倒数第k个节点 | JS | 链表 双指针 | 95 | |
0143 | 重排链表 | JS | 栈 递归 链表 1+ | 148 | |
0002 | 两数相加 | JS | 递归 链表 数学 | 106 | |
0445 | 两数相加 II | JS | 栈 链表 数学 | 28 |
滑动窗口
- 固定长度窗口
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0239 | 滑动窗口最大值 | 队列 数组 滑动窗口 2+ | 98 |
- 不定长度窗口
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0003 | 无重复字符的最长子串 | JS | 哈希表 字符串 滑动窗口 | 642 | |
0076 | 最小覆盖子串 | JS | 哈希表 字符串 滑动窗口 | 87 | |
0718 | 最长重复子数组 | 数组 二分查找 动态规划 3+ | 60 | ||
0209 | 长度最小的子数组 | JS | 数组 二分查找 前缀和 1+ | 49 | |
0862 | 和至少为 K 的最短子数组 | 队列 数组 二分查找 4+ | 16 | ||
1004 | 最大连续1的个数 III | 数组 二分查找 前缀和 1+ | 22 |
补充
- 设计数据结构
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0146 | LRU 缓存 | JS | 设计 哈希表 链表 1+ | 525 | |
0460 | LFU 缓存 | 设计 哈希表 链表 1+ | 45 |
- 数学
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0007 | 整数反转 | JS | 数学 | 37 | |
0009 | 回文数 | JS | 数学 | 27 | |
剑指 Offer 62 | 圆圈中最后剩下的数字 | 递归 数学 | 30 | ||
0168 | Excel表列名称 | 数学 字符串 | 20 | ||
0400 | 第 N 位数字 | 数学 二分查找 | 23 |
- 模拟
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0008 | 字符串转换整数 (atoi) | JS | 字符串 | 106 | |
0165 | 比较版本号 | 双指针 字符串 | 96 | ||
0468 | 验证IP地址 | 字符串 | 48 | ||
0086 | 分隔链表 | JS | 链表 双指针 | 18 |
- 前缀和
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0560 | 和为 K 的子数组 | 数组 哈希表 前缀和 | 49 |
- 思维锻炼
题号 | 标题 | 题解 | 标签 | 难度 | 频次 |
---|---|---|---|---|---|
0031 | 下一个排列 | 数组 双指针 | 111 | ||
0556 | 下一个更大元素 III | 数学 双指针 字符串 | 19 | ||
0470 | 用 Rand7() 实现 Rand10() | 数学 拒绝采样 概率与统计 1+ | 68 |