题号 | 题目 | 题解 | 难度 | 标签 |
---|---|---|---|---|
1 | 两数之和 | C++ | 简单 | map |
2 | 两数相加 | C++ | 中等 | 链表 |
3 | 无重复字符的最长子串 | C++ | 中等 | 滑动窗口 |
4 | 寻找两个有序数组的中位数 | C++ | 困难 | 第k大、二分 |
5 | 最长回文子串 | C++ | 中等 | dp,中心扩散 |
6 | Z 字形变换 | C++ | 中等 | |
7 | 整数反转 | C++ | 中等 | 整数反转(防止溢出) |
8 | 字符串转换整数 (atoi) | C++ | 中等 | |
9 | 回文数 | C++ | 简单 | |
10 | 正则表达式匹配 | C++ | 困难 | dp |
11 | 盛最多水的容器 | C++ | 中等 | 双指针 |
12 | 整数转罗马数字 | C++ | 中等 | |
13 | 罗马数字转整数 | C++ | 简单 | |
14 | 最长公共前缀 | C++ | 简单 | |
15 | 三数之和 | C++ | 中等 | 双指针 |
16 | 最接近的三数之和 | C++ | 中等 | 排序+双指针 |
17 | 电话号码的字母组合 | C++ | 中等 | 回溯法 |
18 | 四数之和 | C++ | 中等 | 双指针 |
19 | 删除链表的倒数第N个节点 | C++ | 中等 | 双指针 |
20 | 有效的括号 | C++ | 简单 | 栈 |
21 | 合并两个有序链表 | C++ | 简单 | |
22 | 括号生成 | C++ | 中等 | 回溯法 |
23 | 合并K个排序链表 | C++ | 困难 | 优先队列 |
24 | 两两交换链表中的节点 | C++ | 中等 | |
25 | K 个一组翻转链表 | C++ | 困难 | k个反转 |
26 | 删除排序数组中的重复项 | C++ | 简单 | 双指针 |
27 | 移除元素 | C++ | 简单 | 双指针 |
28 | 实现 strStr() | C++ | 简单 | KMP |
31 | 下一个排列 | C++ | 中等 | |
32 | 最长有效括号 | C++ | 困难 | dp、栈、计数 |
33 | 搜索旋转排序数组 | C++ | 中等 | 二分法、三异或 |
34 | 在排序数组中查找元素的第一个和最后一个位置 | C++ | 中等 | 二分法 |
35 | 搜索插入位置 | C++ | 简单 | 二分法 |
36 | 有效的数独 | C++ | 中等 | 记录行、列、九宫格 |
37 | 解数独 | C++ | 困难 | 回溯、bitset |
39 | 组合总和 | C++ | 中等 | 回溯法 |
40 | 组合总和 II | C++ | 中等 | 回溯法 |
41 | 缺失的第一个正数 | C++ | 困难 | 哈希 |
42 | 接雨水 | C++ | 困难 | 双指针、单调栈 |
43 | 字符串相乘 | C++ | 中等 | 乘法、结果位置 |
44 | 通配符匹配 | C++ | 困难 | dp |
45 | 跳跃游戏 II | C++ | 困难 | 贪心 |
46 | 全排列 | C++ | 中等 | 回溯法 |
47 | 全排列II | C++ | 中等 | 回溯法 |
48 | 旋转图像 | C++ | 中等 | 转置+反转、找规律 |
50 | Pow(x, n) | C++ | 中等 | 二分法、快速幂 |
51 | N皇后 | C++ | 困难 | 回溯法 |
52 | N皇后 II | C++ | 困难 | 回溯法 |
53 | 最大子序和 | C++ | 简单 | dp、贪心 |
54 | 螺旋矩阵 | C++ | 中等 | 模拟边界 |
55 | 跳跃游戏 | C++ | 中等 | dp、贪心 |
56 | 合并区间 | C++ | 中等 | |
59 | 螺旋矩阵 II | C++ | 中等 | 模拟边界 |
60 | 第k个排列 | C++ | 中等 | 数学 |
61 | 旋转链表 | C++ | 中等 | 循环链表 |
62 | 不同路径 | C++ | 中等 | 组合数、dp |
63 | 不同路径 II | C++ | 中等 | dp |
64 | 最小路径和 | C++ | 中等 | dp |
65 | 有效数字 | C++ | 困难 | 分类 |
66 | 加一 | C++ | 简单 | 字符加法 |
67 | 二进制求和 | C++ | 简单 | 字符串二进制加法 |
69 | x 的平方根 | C++ | 简单 | 二分法 |
70 | 爬楼梯 | C++ | 简单 | dp、斐波那契数列 |
72 | 编辑距离 | C++ | 困难 | dp |
73 | 矩阵置零 | C++ | 中等 | |
74 | 搜索二维矩阵 | C++ | 中等 | 二分法 |
75 | 颜色分类 | C++ | 中等 | 三指针、快排 |
76 | 最小覆盖子串 | C++ | 困难 | map、滑动窗口 |
77 | 组合 | C++ | 中等 | 回溯法 |
78 | 子集 | C++ | 中等 | 回溯法、位掩码 |
79 | 单词搜索 | C++ | 中等 | dfs |
82 | 删除排序链表中的重复元素 II | C++ | 中等 | 双指针 |
88 | 合并两个有序数组 | C++ | 简单 | 双指针 |
84 | 柱状图中最大的矩形 | C++ | 困难 | 单调栈、双哨兵 |
90 | 子集 II | C++ | 中等 | 回溯、位掩码 |
91 | 解码方法 | C++ | 中等 | dp |
92 | 反转链表 II | C++ | 中等 | 头插法 |
93 | 复原IP地址 | C++ | 中等 | 回溯法 |
94 | 中序遍历 | C++ | 中等 | 递归法、迭代法 |
95 | 不同的二叉搜索树 II | C++ | 中等 | 递归 |
96 | 不同的二叉搜索树 | C++ | 中等 | dp、卡塔兰数 |
97 | 交错字符串 | C++ | 困难 | dp |
98 | 验证二叉搜索树 | C++ | 中等 | 中序遍历、递归 |
99 | 恢复二叉搜索树 | C++ | 中等 | 中序遍历、逆序对 |
100 | 相同的树 | C++ | 简单 | dfs |
101 | 对称二叉树 | C++ | 简单 | 递归、迭代(队列) |
102 | 二叉树的层次遍历 | C++ | 中等 | dfs、迭代(队列) |
104 | 二叉树的最大深度 | C++ | 简单 | 递归 |
105 | 从前序与中序遍历序列构造二叉树 | C++ | 中等 | 恢复二叉树 |
106 | 从中序与后序遍历序列构造二叉树 | C++ | 中等 | 恢复二叉树 |
107 | 二叉树的层次遍历 II | C++ | 简单 | dfs、迭代(队列) |
108 | 将有序数组转换为二叉搜索树 | C++ | 简单 | 递归 |
109 | 有序链表转换二叉搜索树 | C++ | 中等 | 中序遍历、链表 |
110 | 平衡二叉树 | C++ | 简单 | 后序遍历 |
111 | 二叉树的最小深度 | C++ | 简单 | 递归、bfs、dfs |
112 | 路径总和 | C++ | 简单 | |
113 | 路径总和 II | C++ | 中等 | dfs |
114 | 二叉树展开为链表 | C++ | 中等 | 二叉树、链表 |
116 | 填充每个节点的下一个右侧节点指针 | C++ | 中等 | 层序遍历 |
117 | 填充每个节点的下一个右侧节点指针 II | C++ | 中等 | 层序遍历 |
118 | 杨辉三角 | C++ | 简单 | dp |
120 | 三角形最小路径和 | C++ | 中等 | dp |
121 | 买卖股票的最佳时机 | C++ | 简单 | 单调栈 |
122 | 买卖股票的最佳时机 II | C++ | 简单 | 单调栈、贪心 |
124 | 二叉树中的最大路径和 | C++ | 困难 | 后序遍历 |
125 | 验证回文串 | C++ | 简单 | 双指针 |
126 | 单词接龙 II | C++ | 困难 | 图+bfs |
128 | 最长连续序列 | C++ | 困难 | set |
129 | 求根到叶子节点数字之和 | C++ | 中等 | dfs |
130 | 被围绕的区域 | C++ | 中等 | dfs |
133 | 克隆图 | C++ | 中等 | dfs、bfs、哈希 |
134 | 加油站 | C++ | 中等 | 总油量最小值 |
136 | 只出现一次的数字 | C++ | 简单 | 位操作 |
137 | 只出现一次的数字 II | C++ | 中等 | 位操作(三进制半加器) |
138 | 复制带随机指针的链表 | C++ | 中等 | 迭代、dfs、bfs |
139 | 单词拆分 | C++ | 中等 | dp |
143 | 重排链表 | C++ | 中等 | 中点反转后拼接 |
144 | 二叉树的前序遍历 | C++ | 中等 | 递归法、迭代法 |
145 | 二叉树的后序遍历 | C++ | 困难 | 递归、迭代 |
146 | LRU缓存机制 | C++ | 中等 | map+双向链表 |
148 | 排序链表 | C++ | 中等 | 快慢指针、归并 |
150 | 波兰表达式求值 | C++ | 中等 | 栈 |
151 | 翻转字符串里的单词 | C++ | 中等 | 反转、原址操作 |
152 | 乘积最大子数组 | C++ | 中等 | max、min |
153 | 寻找旋转排序数组中的最小值 | C++ | 中等 | 二分法 |
154 | 寻找旋转排序数组中的最小值 II | C++ | 困难 | 二分法、递归 |
160 | 相交链表 | C++ | 简单 | 双指针 |
162 | 寻找峰值 | C++ | 中等 | 二分法 |
167 | 两数之和 II - 输入有序数组 | C++ | 简单 | 双指针 |
169 | 求众数 | C++ | 简单 | 投票法 |
174 | 地下城游戏 | C++ | 困难 | dp |
179 | 最大数 | C++ | 中等 | 字符串排序 |
191 | 位1的个数 | C++ | 简单 | x&x-1 |
198 | 打家劫舍 | C++ | 简单 | dp |
199 | 二叉树的右视图 | C++ | 中等 | dfs、bfs、层序遍历 |
200 | 岛屿数量 | C++ | 中等 | dfs |
201 | 数字范围按位与 | C++ | 中等 | 位操作 |
202 | 快乐数 | C++ | 简单 | 判断是否有环 |
206 | 反转链表 | C++ | 简单 | 递归、迭代、栈 |
207 | 课程表 | C++ | 中等 | 拓扑排序 |
209 | 长度最小的子数组 | C++ | 中等 | 双指针 |
210 | 课程表 II | C++ | 中等 | 拓扑排序 |
213 | 打家劫舍 II | C++ | 中等 | dp |
214 | 最短回文串 | C++ | 困难 | Rabin-Karp、KMP、Manacher |
215 | 数组中第K个最大元素 | C++ | 中等 | 小顶堆、快排 |
216 | 组合总和 III | C++ | 中等 | 回溯法 |
217 | 存在重复元素 | C++ | 简单 | |
221 | 最大正方形 | C++ | 中等 | dp |
222 | 完全二叉树的节点个数 | C++ | 中等 | 二分法 |
225 | 用队列实现栈 | C++ | 简单 | 队列、栈 |
226 | 翻转二叉树 | C++ | 简单 | |
230 | 二叉搜索树中第K小的元素 | C++ | 中等 | 中序遍历+提前终止 |
231 | 2的幂 | C++ | 简单 | 移位 |
233 | 数字 1 的个数 | C++ | 困难 | 公式、递归 |
234 | 回文链表 | C++ | 简单 | 快慢指针、链表逆序 |
235 | 二叉搜索树的最近公共祖先 | C++ | 简单 | LCA |
236 | 二叉树的最近公共祖先 | C++ | 中等 | 递归(后序遍历) |
238 | 除自身以外数组的乘积 | C++ | 中等 | 前/后缀乘积 |
239 | 滑动窗口最大值 | C++ | 困难 | 单调队列 |
240 | 搜索二维矩阵 II | C++ | 中等 | 二分法、副对角线 |
257 | 二叉树的所有路径 | C++ | 简单 | dfs、bfs |
260 | 只出现一次的数字 III | C++ | 中等 | 位操作 |
263 | 丑数 | C++ | 简单 | 丑数 |
264 | 丑数 II | C++ | 中等 | 三指针、dp |
268 | 缺失数字 | C++ | 简单 | 数学、异或 |
274 | H指数 | C++ | 中等 | 计数排序 |
275 | H指数 II | C++ | 中等 | 二分法 |
279 | 完全平方数 | C++ | 中等 | dp |
283 | 移动零 | C++ | 简单 | 双指针 |
287 | 寻找重复数 | C++ | 中等 | 二分法、快慢指针 |
289 | 生命游戏 | C++ | 中等 | 搜索、位 |
292 | Nim 游戏 | C++ | 简单 | 博弈论、必胜态必败态 |
295 | 数据流的中位数 | C++ | 困难 | 大顶堆、小顶堆 |
297 | 二叉树的序列化与反序列化 | C++ | 困难 | 层序遍历 |
300 | 最长上升子序列 | C++ | 中等 | dp |
307 | 区域和检索 - 数组可修改 | C++ | 中等 | 树状数组、线段树 |
309 | 最佳买卖股票时机含冷冻期 | C++ | 中等 | dp |
312 | 戳气球 | C++ | 困难 | 开区间 dp |
315 | 计算右侧小于当前元素的个数 | C++ | 困难 | 树状数组、前缀和 |
322 | 零钱兑换 | C++ | 中等 | dp |
328 | 奇偶链表 | C++ | 中等 | 链表 |
329 | 矩阵中的最长递增路径 | C++ | 困难 | dfs、拓扑排序 |
332 | 重新安排行程 | C++ | 中等 | 欧拉图 |
336 | 回文对 | C++ | 困难 | 枚举、字典树 |
337 | 打家劫舍 III | C++ | 中等 | 树状dp |
343 | 整数拆分 | C++ | 中等 | dp、贪心 |
344 | 反转字符串 | C++ | 简单 | swap、rbegin |
347 | 前K个高频元素 | C++ | 中等 | 哈希+排序、堆 |
350 | 两个数组的交集 II | C++ | 简单 | 哈希、排序+双指针 |
355 | 设计推特 | C++ | 中等 | map、链表、k有序链表合并 |
365 | 水壶问题 | C++ | 中等 | dfs、gcd |
367 | 有效的完全平方数 | C++ | 简单 | 二分法 |
372 | 超级次方 | C++ | 中等 | 幂运算、取模 |
378 | 有序矩阵中第K小的元素 | C++ | 中等 | 优先队列、二分法 |
392 | 判断子序列 | C++ | 简单 | 双指针、dp |
394 | 字符串解码 | C++ | 中等 | 栈 |
400 | 第N个数字 | C++ | 中等 | 数学 |
404 | 左叶子之和 | C++ | 简单 | 递归 |
409 | 最长回文串 | C++ | 简单 | |
410 | 分割数组的最大值 | C++ | 困难 | dp、二分法(从结果出发) |
415 | 字符串相加 | C++ | 简单 | |
416 | 分割等和子集 | C++ | 中等 | 背包问题 |
424 | 替换后的最长重复字符 | C++ | 中等 | 滑动窗口 |
445 | 两数相加 II | C++ | 中等 | 反向链表、栈 |
450 | 删除二叉搜索树中的节点 | C++ | 中等 | 二叉搜索树、删除节点 |
459 | 重复的子字符串 | C++ | 简单 | 枚举、双倍字符串、kmp |
460 | LFU缓存 | C++ | 困难 | map+两级链表 |
463 | 岛屿的周长 | C++ | 简单 | dfs、边的个数 |
466 | 统计重复个数 | C++ | 困难 | 循环节、map |
468 | 验证IP地址 | C++ | 中等 | 字符串 |
486 | 预测赢家 | C++ | 中等 | dp、博弈 |
491 | 递增子序列 | C++ | 中等 | 二进制枚举、Rabin-Karp、dfs |
496 | 下一个更大元素 I | C++ | 简单 | 单调栈 |
501 | 二叉搜索树中的众数 | C++ | 简单 | 中序遍历 |
503 | 下一个更大元素 II | C++ | 中等 | 单调栈 |
509 | 斐波那契数 | C++ | 简单 | 斐波那契数 |
518 | 零钱兑换 II | C++ | 中等 | dp、循环顺序 |
529 | 扫雷游戏 | C++ | 中等 | dfs |
530 | 二叉搜索树的最小绝对差 | C++ | 简单 | 中序遍历 |
535 | TinyURL 的加密与解密 | C++ | 中等 | 62进制 |
538 | 把二叉搜索树转换为累加树 | C++ | 简单 | 中序遍历 |
542 | 01 矩阵 | C++ | 中等 | bfs、dp |
543 | 二叉树的直径 | C++ | 简单 | dfs |
546 | 移除盒子 | C++ | 困难 | dp |
547 | 朋友圈 | C++ | 中等 | 并查集 |
557 | 反转字符串中的单词 III | C++ | 简单 | swap |
560 | 和为K的子数组 | C++ | 中等 | 前缀和、哈希 |
617 | 合并二叉树 | C++ | 简单 | 递归 |
632 | 最小区间 | C++ | 困难 | 堆、滑动窗口 |
637 | 二叉树的层平均值 | C++ | 中等 | bfs |
647 | 回文子串 | C++ | 中等 | 中心扩散、Manacher |
657 | 机器人能否返回原点 | C++ | 简单 | 模拟 |
662 | 二叉树最大宽度 | C++ | 中等 | dfs、bfs |
679 | 24 点游戏 | C++ | 困难 | 回溯、合并 |
680 | 验证回文字符串 Ⅱ | C++ | 简单 | 双指针 |
685 | 冗余连接 II | C++ | 困难 | 并查集 |
693 | 交替位二进制数 | C++ | 简单 | 位运算 |
695 | 岛屿的最大面积 | C++ | 中等 | dfs、bfs |
696 | 计数二进制子串 | C++ | 简单 | 中心扩散、分组计数 |
701 | 二叉搜索树中的插入操作 | C++ | 中等 | 二分搜索 |
718 | 最长重复子数组 | C++ | 中等 | dp、滑动窗口 |
733 | 图像渲染 | C++ | 简单 | dfs、bfs |
739 | 每日温度 | C++ | 中等 | 单调栈 |
753 | 破解保险箱 | C++ | 困难 | 欧拉图 |
763 | 划分字母区间 | C++ | 中等 | 贪心、双指针 |
771 | 宝石与石头 | C++ | 简单 | 哈希 |
785 | 判断二分图 | C++ | 中等 | bfs、并查集 |
820 | 单词的压缩编码 | C++ | 中等 | 字典树、后缀 |
824 | 山羊拉丁文 | C++ | 简单 | 字符串处理 |
834 | 树中距离之和 | C++ | 困难 | 树形 dp |
836 | 矩形重叠 | C++ | 简单 | 考虑不重叠 |
837 | 新21点 | C++ | 中等 | dp |
841 | 钥匙和房间 | C++ | 中等 | dfs、并查集 |
844 | 比较含退格的字符串 | C++ | 简单 | 双指针 |
860 | 柠檬水找零 | C++ | 简单 | 模拟 |
876 | 链表的中间节点 | C++ | 简单 | 快慢指针 |
877 | 石子游戏 | C++ | 中等 | dp、博弈 |
887 | 鸡蛋掉落 | C++ | 困难 | dp+二分 |
892 | 三维形体的表面积 | C++ | 简单 | 加法和减法 |
912 | 排序数组 | C++ | 中等 | 各种排序算法 |
914 | 卡牌分组 | C++ | 简单 | 公约数 |
925 | 长按键入 | C++ | 简单 | 双指针 |
945 | 使数组唯一的最小增量 | C++ | 中等 | 计数法、排序 |
946 | 验证栈序列 | C++ | 中等 | 模拟栈 |
958 | 二叉树的完全性检验 | C++ | 中等 | 层序遍历 |
968 | 监控二叉树 | C++ | 困难 | 树的状态转移 |
974 | 和可被 K 整除的子数组 | C++ | 中等 | 前缀和、线性同余 |
977 | 有序数组的平方 | C++ | 简单 | 双指针 |
983 | 最低票价 | C++ | 中等 | dp |
988 | 从叶结点开始的最小字符串 | C++ | 中等 | dfs |
990 | 等式方程的可满足性 | C++ | 中等 | 并查集 |
994 | 腐烂的橘子 | C++ | 简单 | bfs |
999 | 车的可用捕获量 | C++ | 简单 | 模拟 |
1002 | 查找常用字符 | C++ | 简单 | 计数 |
1013 | 将数组分成和相等的三个部分 | C++ | 简单 | |
1014 | 最佳观光组合 | C++ | 中等 | |
1024 | 视频拼接 | C++ | 中等 | dp、贪心 |
1025 | 除数博弈 | C++ | 简单 | 博弈论 |
1028 | 从先序遍历还原二叉树 | C++ | 困难 | 栈 |
1038 | 从二叉搜索树到更大和树 | C++ | 中等 | 中序遍历 |
1071 | 字符串的最大公因子 | C++ | 简单 | gcd、str1+str2==str2+str1 |
1095 | 山脉数组中查找目标值 | C++ | 困难 | 二分法 |
1103 | 分糖果 II | C++ | 简单 | 等差数列 |
1106 | 解析布尔表达式 | C++ | 困难 | 栈、')'开始计算 |
1111 | 有效括号的嵌套深度 | C++ | 中等 | 嵌套深度奇偶 |
1143 | 最长公共子序列 | C++ | 中等 | dp |
1160 | 拼写单词 | C++ | 简单 | map、vector |
1162 | 地图分析 | C++ | 中等 | bfs |
1170 | 比较字符串中最小字母出现频次 | C++ | 简单 | |
1207 | 独一无二的出现次数 | C++ | 简单 | |
1208 | 尽可能使字符串相等 | C++ | 中等 | 双指针 |
1209 | 删除字符串中的所有相邻重复项 II | C++ | 中等 | |
1217 | 玩筹码 | C++ | 简单 | |
1218 | 最长定差子序列 | C++ | 中等 | dp |
1219 | 黄金矿工 | C++ | 中等 | dfs |
1220 | 统计元音字母序列的数目 | C++ | 困难 | dp |
1232 | 缀点成线 | C++ | 简单 | |
1248 | 统计「优美子数组」 | C++ | 中等 | 滑动窗口、前缀和 |
1260 | 二维网格迁移 | C++ | 简单 | 矩阵操作 |
1261 | 在受污染的二叉树中查找元素 | C++ | 中等 | |
1266 | 访问所有点的最小时间 | C++ | 简单 | 切比雪夫距离 |
1267 | 统计参与通信的服务器 | C++ | 中等 | |
1275 | 找出井字棋的获胜者 | C++ | 简单 | |
1276 | 不浪费原料的汉堡制作方案 | C++ | 中等 | |
1277 | 统计全为 1 的正方形子矩阵 | C++ | 中等 | dp |
1290 | 二进制链表转整数 | C++ | 简单 | |
1300 | 转变数组后最接近目标值的数组和 | C++ | 中等 | 排序+遍历 |
1335 | 工作计划的最低难度 | C++ | 困难 | dp |
1346 | 检查整数及其两倍数是否存在 | C++ | 简单 | |
1347 | 制造字母异位词的最小步骤数 | C++ | 中等 | 统计字符 |
1348 | 推文计数 | C++ | 中等 | |
1349 | 参加考试的最大学生数 | C++ | 困难 | 状态压缩、dp |
1360 | 日期之间隔几天 | C++ | 简单 | 闰年 |
1371 | 每个元音包含偶数次的最长子字符串 | C++ | 中等 | 前缀和、状态压缩 |
1392 | 最长快乐前缀 | C++ | 困难 | Rabin-Karp、KMP |
1431 | 拥有最多糖果的孩子 | C++ | 简单 | |
LCP 13 | 寻宝 | C++ | 困难 | bfs、状态压缩、dp |
LCP 19 | 秋叶收藏集 | C++ | 中等 | dp |
题号 | 题目 | 题解 | 难度 | 标签 |
---|---|---|---|---|
面试题03 | 数组中重复的数字 | C++ | 简单 | hash |
面试题04 | 二维数组中的查找 | C++ | 简单 | 标志数 |
面试题05 | 替换空格 | C++ | 简单 | |
面试题06 | 从尾到头打印链表 | C++ | 简单 | 辅助栈、递归 |
面试题07 | 重建二叉树 | C++ | 中等 | 恢复二叉树 |
面试题09 | 用两个栈实现队列 | C++ | 简单 | 栈、队列 |
面试题10- I | 斐波那契数列 | C++ | 简单 | 斐波那契数 |
面试题10- II | 青蛙跳台阶问题 | C++ | 简单 | 斐波那契数 |
面试题11 | 旋转数组的最小数字 | C++ | 简单 | 二分法、递归 |
面试题12 | 矩阵中的路径 | C++ | 中等 | dfs |
面试题13 | 机器人的运动范围 | C++ | 中等 | dfs、数位和 |
面试题14- I | 剪绳子 | C++ | 中等 | dp、贪心 |
面试题14- II | 剪绳子 II | C++ | 中等 | 贪心+快速幂+乘法取余 |
面试题15 | 二进制中1的个数 | C++ | 简单 | x&x-1 |
面试题16 | 数值的整数次方 | C++ | 中等 | 快速幂 |
面试题17 | 打印从1到最大的n位数 | C++ | 简单 | 大数、全排列 |
面试题18 | 删除链表的节点 | C++ | 简单 | 哑节点 |
面试题19 | 正则表达式匹配 | C++ | 困难 | dp |
面试题20 | 表示数值的字符串 | C++ | 中等 | 分类 |
面试题21 | 调整数组顺序使奇数位于偶数前面 | C++ | 简单 | 双指针 |
面试题22 | 链表中倒数第k个节点 | C++ | 简单 | 双指针 |
面试题24 | 反转链表 | C++ | 简单 | 双指针 |
面试题25 | 合并两个排序的链表 | C++ | 简单 | 哑结点 |
面试题26 | 树的子结构 | C++ | 中等 | 遍历+递归 |
面试题27 | 二叉树的镜像 | C++ | 简单 | 递归 |
面试题28 | 对称的二叉树 | C++ | 简单 | 递归、迭代(队列) |
面试题29 | 顺时针打印矩阵 | C++ | 简单 | 模拟边界 |
面试题30 | 包含min函数的栈 | C++ | 简单 | 辅助栈 |
面试题31 | 栈的压入、弹出序列 | C++ | 中等 | 模拟栈 |
面试题32 - I | 从上到下打印二叉树 | C++ | 中等 | 队列 |
面试题32 - II | 从上到下打印二叉树 II | C++ | 简单 | 队列 |
面试题32 - III | 从上到下打印二叉树 III | C++ | 中等 | 双端队列 |
面试题33 | 二叉搜索树的后序遍历序列 | C++ | 中等 | 递归、逆序+单调栈 |
面试题34 | 二叉树中和为某一值的路径 | C++ | 中等 | dfs、回溯 |
面试题35 | 复杂链表的复制 | C++ | 中等 | 迭代、dfs、bfs |
面试题36 | 二叉搜索树与双向链表 | C++ | 中等 | 中序遍历、记录前面节点 |
面试题37 | 序列化二叉树 | C++ | 困难 | 层序遍历 |
面试题38 | 字符串的排列 | C++ | 中等 | 回溯法、处理重复 |
面试题39 | 数组中出现次数超过一半的数字 | C++ | 简单 | 投票法 |
面试题40 | 最小的k个数 | C++ | 简单 | 小顶堆、快排** |
面试题41 | 数据流中的中位数 | C++ | 困难 | 大顶堆、小顶堆 |
面试题42 | 连续子数组的最大和 | C++ | 简单 | 贪心 |
面试题43 | 1~n整数中1出现的次数 | C++ | 中等 | 公式、递归 |
面试题44 | 数字序列中某一位的数字 | C++ | 中等 | 数学 |
面试题45 | 把数组排成最小的数 | C++ | 中等 | 字符串排序 |
面试题46 | 把数字翻译成字符串 | C++ | 中等 | 递归、dp |
面试题47 | 礼物的最大价值 | C++ | 中等 | dp |
面试题48 | 最长不含重复字符的子字符串 | C++ | 中等 | 滑动窗口 |
面试题49 | 丑数 | C++ | 中等 | 三指针 |
面试题50 | 第一个只出现一次的字符 | C++ | 简单 | 统计 |
面试题51 | 数组中的逆序对 | C++ | 困难 | 归并 |
面试题52 | 两个链表的第一个公共节点 | C++ | 简单 | 双指针 |
面试题53 - I | 在排序数组中查找数字 I | C++ | 简单 | 二分法 |
面试题53 - II | 0~n-1中缺失的数字 | C++ | 简单 | 二分法 |
面试题54 | 二叉搜索树的第k大节点 | C++ | 简单 | 遍历 |
面试题55 - I | 二叉树的深度 | C++ | 简单 | 递归、迭代 |
面试题55 - II | 平衡二叉树 | C++ | 简单 | 后序遍历 |
面试题56 - I | 数组中数字出现的次数 | C++ | 中等 | 异或、x&-x |
面试题56 - II | 数组中数字出现的次数 II | C++ | 中等 | 三进制、异或 |
面试题57 | 和为s的两个数字 | C++ | 简单 | 双指针 |
面试题58 - I | 翻转单词顺序 | C++ | 简单 | 两次反转 |
面试题58 - II | 左旋转字符串 | C++ | 简单 | 旋转 |
面试题59 - I | 滑动窗口的最大值 | C++ | 简单 | 队列 |
面试题59 - II | 队列的最大值 | C++ | 中等 | 辅助双端递减队列 |
面试题57 - II | 和为s的连续正数序列 | C++ | 简单 | 双指针、队列 |
面试题60 | n个骰子的点数 | C++ | 简单 | dp |
面试题61 | 扑克牌中的顺子 | C++ | 简单 | max-min+1<=5 |
面试题62 | 圆圈中最后剩下的数字 | C++ | 简单 | 约瑟夫环 |
面试题63 | 股票的最大利润 | C++ | 中等 | 单调栈、记录最小值 |
面试题64 | 求1+2+…+n | C++ | 中等 | 加换乘、递归换循环、&&换判断 |
面试题65 | 不用加减乘除做加法 | C++ | 简单 | 全加器 |
面试题66 | 构建乘积数组 | C++ | 简单 | 左右数组 |
面试题67 | 把字符串转换成整数 | C++ | 中等 | 注意越界 |
面试题68 - I | 二叉搜索树的最近公共祖先 | C++ | 简单 | 迭代 |
面试题68 - II | 二叉树的最近公共祖先 | C++ | 简单 | 递归 |
题号 | 题目 | 题解 | 难度 | 标签 |
---|---|---|---|---|
面试题 01.06 | 字符串压缩 | C++ | 简单 | 字符串 |
面试题 01.07 | 旋转矩阵 | C++ | 中等 | 四分之一 |
面试题 02.01 | 移除重复节点 | C++ | 简单 | |
面试题 02.05 | 链表求和 | C++ | 简单 | 链表求和 |
面试题 05.06 | 整数转换 | C++ | 简单 | temp&-temp、temp&temp-1 |
面试题 08.03 | 魔术索引 | C++ | 简单 | |
面试题 08.11 | 硬币 | C++ | 中等 | dp、循环顺序 |
面试题 10.01 | 合并排序的数组 | C++ | 简单 | 逆向双指针 |
面试题 10.03 | 搜索旋转数组 | C++ | 中等 | 二分法 |
面试题 16.03 | 交点 | C++ | 困难 | 数学 |
面试题 16.11 | 跳水板 | C++ | 简单 | 公式 |
面试题 16.18 | 模式匹配 | C++ | 中等 | 枚举解 |
面试题 16.25 | LRU缓存 | C++ | 困难 | map+双向链表 |
面试题 17.01 | 不用加号的加法 | C++ | 简单 | 位操作 |
面试题 17.13 | 恢复空格 | C++ | 中等 | 字典树、dp |
面试题 17.16 | 按摩师 | C++ | 简单 | dp |
面试题 17.21 | 直方图的水量 | C++ | 困难 | 单调栈、dp |