题目链接:剑指Offer
为了便于本地测试,我的ac代码,在 main 函数里面传了参,提交只需提交对应的解决函数即可。
- 二维数组中的查找
- 替换空格
- 从尾到头打印链表
- 重建二叉树
- 用两个栈实现队列
- 旋转数组的最小数字
- 斐波那契数列
- 跳台阶
- 变态跳台阶
- 矩形覆盖
- 二进制中1的个数
- 数值的整数次方
- 调整数组顺序使奇数位于偶数前面
- 链表中倒数第k个节点
- 反转链表
- 合并两个排序的链表
- 树的子结构
- 二叉树的镜像
- 顺时针打印矩阵
- 包含min函数的栈
- 栈的压入、弹出序列
- 从上往下打印二叉树
- 二叉搜索树的后序遍历序列
- 二叉树中和为某一值的路径
- 复杂链表的复制
- 二叉搜索树与双向链表
- 字符串的排列
- 数组中出现次数超过一半的数字
- 最小的K个数
- 连续子数组的最大和
- 整数中1出现的次数
- 把数组排成最小的数
- 丑数
- 第一个只出现一次的字符
- 数组中的逆序对
- 两个链表的第一个公共结点
- 数字在排序数组中出现的次数
- 二叉树的深度
- 平衡二叉树
- 数组中只出现一次的数字
- 和为S的连续正数序列
- 和为S的两个数字
- 左旋转字符串
- 翻转单词顺序列
- 扑克牌顺子
- 圆圈中最后剩下的数
- 求1+2+3+...+n
- 不用加减乘除做加法
- 把字符串转换成整数
- 数组中重复的数字
- 构建乘积数组
- 正则表达式匹配
- 表示数值的字符串
- 字符流中第一个不重复的字符
- 链表中环的入口结点
- 删除链表中重复的结点
- 二叉树的下一个结点
- 对称的二叉树
- 按之字形顺序打印二叉树
- 把二叉树打印成多行
- 序列化二叉树
- 滑动窗口的最大值
- 二叉搜索树的第k个结点
- 数据流的中位数
以下是我的 LeetCode 刷题题解,挑一些典型题。
LeetCode 题号 | 题解 | 难度 | 题目类型 |
---|---|---|---|
2 | 两数相加 | 简单 | 链表 |
3 | 无重复字符的最长子串 | 中等 | 滑动窗口 |
4 | 寻找两个有序数组的中位数 | 困难 | 递归 |
5 | 最长回文子串 | 中等 | Manacher算法 |
8 | 字符串转换整数 (atoi) | 中等 | 模拟 |
11 | 盛最多水的容器 | 中等 | 双指针 |
17 | 电话号码的字母组合 | 中等 | dfs |
20 | 有效的括号 | 简单 | 栈 |
21 | 合并两个有序链表 | 简单 | 链表、递归 |
22 | 括号生成 | 中等 | 思路、递归 |
23 | 合并K个排序链表 | 困难 | 思路、优先队列 |
24 | 两两交换链表中的节点 | 中等 | 链表 |
25 | K 个一组翻转链表 | 困难 | 模拟 |
28 | 实现strStr() | 简单 | kmp |
31 | 下一个排列 | 中等 | 找规律 |
32 | 最长有效括号 | 困难 | 双指针扫描、贪心 |
33 | 搜索旋转排序数组 | 中等 | 二分 |
34 | 在排序数组中查找元素的第一个和最后一个位置 | 中等 | 二分 |
37 | 解数独 | 困难 | dfs |
39 | 组合总和 | 中等 | dfs、部分和 |
40 | 组合总和 II | 中等 | dfs、部分和 |
42 | 接雨水 | 困难 | 单调栈 |
43 | 字符串相乘 | 中等 | 模拟、大数 |
45 | 跳跃游戏 II | 困难 | 贪心、思路 |
46 | 全排列 | 中等 | dfs |
47 | 全排列 II | 中等 | dfs |
50 | Pow(x,n) | 中等 | 快速幂 |
51 | N 皇后 | 困难 | dfs |
53 | 最大子序和 | 简单 | dp、最大字段和 |
55 | 跳跃游戏 | 中等 | 贪心、思路 |
56 | 合并区间 | 中等 | 贪心 |
60 | 第k个排列 | 中等 | dfs、全排列 |
62 | 圆圈中最后剩下的数字 | 简单 | 数论、约瑟夫环 |
69 | x 的平方根 | 简单 | 二分 |
72 | 编辑距离 | 困难 | dp,编辑距离 |
76 | 最小覆盖子串 | 困难 | 滑动窗口 |
77 | 组合 | 中等 | dfs、组合数 |
78 | 子集 | 中等 | 枚举子集 |
79 | 单词搜索 | 中等 | dfs |
83 | 删除排序链表中的重复元素 | 简单 | 递归 |
93 | 复原IP地址 | 中等 | 递归 |
94 | 二叉树的中序遍历 | 中等 | 二叉树、递归 |
98 | 验证二叉搜索树 | 中等 | 二叉树、递归 |
100 | 相同的树 | 简单 | 递归 |
102 | 二叉树的层次遍历 | 中等 | 二叉树、bfs |
104 | 二叉树的最大深度 | 简单 | 二叉树、dfs |
106 | 从中序与后序遍历序列构造二叉树 | 中等 | 构造二叉树、dfs |
107 | 二叉树的层次遍历 II | 简单 | bfs、二叉树 |
109 | 有序链表转换二叉搜索树 | 中等 | 快慢指针 |
110 | 平衡二叉树 | 简单 | 递归 |
111 | 二叉树的最小深度 | 简单 | dfs、bfs |
113 | 路径总和 II | 中等 | dfs、二叉树 |
114 | 二叉树展开为链表 | 中等 | 二叉树遍历 |
116 | 填充每个节点的下一个右侧节点指针 | 中等 | 二叉树、BFS |
117 | 填充每个节点的下一个右侧节点指针 II | 中等 | 二叉树、BFS |
121 | 买卖股票的最佳时机 | 简单 | 单调队列 |
122 | 买卖股票的最佳时机2 | 简单 | 思路 |
123 | 买卖股票的最佳时机3 | 困难 | 思路 |
129 | 求根到叶子节点数字之和 | 中等 | 模拟、递归 |
130 | 被围绕的区域 | 中等 | dfs |
133 | 克隆图 | 中等 | 递归 |
134 | 加油站 | 中等 | 思路,贪心 |
136 | 只出现一次的数字 | 简单 | 位运算 |
137 | 只出现一次的数字2 | 困难 | 位运算 |
139 | 单词拆分 | 中等 | dp |
140 | 单词拆分 II | 困难 | 记忆化搜索 |
143 | 重排链表 | 中等 | 链表 |
144 | 二叉树的前序遍历 | 中等 | 二叉树、递归 |
145 | 二叉树的后序遍历 | 困难 | 二叉树、递归 |
151 | 翻转字符串里的单词 | 中等 | 模拟 |
152 | 乘积最大子数组 | 中等 | 思路 |
155 | 最小栈 | 简单 | 栈 |
162 | 寻找峰值 | 中等 | 二分 |
189 | 旋转数组 | 中等 | 思路 |
199 | 二叉树的右视图 | 中等 | 二叉树、dfs |
200 | 岛屿数量 | 中等 | dfs |
201 | 数字范围按位与 | 中等 | 位运算 |
202 | 快乐数 | 简单 | 思路、循环节 |
207 | 课程表 | 中等 | 拓扑排序 |
210 | 课程表 II | 中等 | 拓扑排序 |
214 | 最短回文串 | 困难 | kmp、next数组应用 |
216 | 组合总和 III | 中等 | dfs、部分和 |
221 | 最大正方形 | 中等 | dp |
226 | 翻转二叉树 | 简单 | 二叉树、递归 |
234 | 回文链表 | 简单 | 链表 |
235 | 二叉搜索树的最近公共祖先 | 简单 | lca |
236 | 二叉树的最近公共祖先 | 中等 | 递归、lca |
239 | 滑动窗口最大值 | 困难 | 单调队列 |
257 | 二叉树的所有路径 | 简单 | 二叉树、递归 |
278 | 第一个错误的版本 | 简单 | 二分 |
287 | 寻找重复数 | 中等 | 思路 |
289 | 生命游戏 | 中等 | 思路 |
295 | 数据流的中位数 | 困难 | 堆、思路 |
321 | 拼接最大数 | 困难 | 单调栈、思路 |
322 | 零钱兑换 | 中等 | dp |
327 | 区间和的个数 | 困难 | 树状数组、线段树、归并排序 |
329 | 矩阵中的最长递增路径 | 困难 | 记忆化搜索、dfs |
332 | 重新安排行程 | 中等 | 欧拉回路、一笔画 |
336 | 回文对 | 困难 | 字典树、Trie |
343 | 整数拆分 | 中等 | dp |
347 | 前 K 个高频元素 | 中等 | 堆、STL |
355 | 设计推特 | 中等 | 模拟 |
373 | 打家劫舍 III | 中等 | 树形dp |
392 | 判断子序列 | 简单 | 双指针、dp |
399 | 除法求值 | 中等 | 带权并查集 |
404 | 左叶子之和 | 简单 | dfs、bfs、二叉树 |
406 | 根据身高重建队列 | 中等 | 思路 |
410 | 分割数组的最大值 | 困难 | 二分、dp |
415 | 字符串相加 | 简单 | 模拟、大数 |
440 | 字典序的第K小数字.md | 困难 | 字典树、Trie |
445 | 两数相加 II | 中等 | 思路、模拟 |
459 | 重复的子字符串 | 简单 | kmp |
460 | LFU缓存 | 困难 | 模拟、lfu |
463 | 岛屿的周长 | 简单 | 思路 |
466 | 统计重复个数 | 困难 | 循环节、思路 |
486 | 预测赢家 | 中等 | 博弈、递归、dp |
491 | 递增子序列 | 中等 | 枚举子集 |
501 | 二叉搜索树中的众数 | 简单 | dfs、BST、二叉树 |
514 | 自由之路 | 困难 | dp |
518 | 零钱兑换 II | 中等 | dp、背包 |
529 | 扫雷游戏 | 中等 | dfs |
530 | 二叉搜索树的最小绝对差 | 简单 | dfs、BST |
538 | 把二叉搜索树转换为累加树 | 简单 | dfs、BST |
542 | 01 矩阵 | 中等 | bfs |
546 | 移除盒子 | 困难 | 区间dp、记忆花搜索 |
547 | 省份数量 | 中等 | DFS、连通图 |
557 | 反转字符串中的单词 III | 简单 | 模拟 |
560 | 和为K的子数组 | 中等 | 前缀和、思路 |
572 | 另一个树的子树 | 简单 | 树哈希 |
617 | 合并二叉树 | 简单 | dfs、二叉树 |
632 | 最小区间 | 困难 | 思路、堆 |
637 | 二叉树的层平均值 | 简单 | bfs、二叉树 |
647 | 回文子串 | 中等 | Manacher 算法 |
657 | 机器人能否返回原点 | 简单 | 思路 |
658 | 找到K个最接近的元素 | 中等 | 双指针、二分 |
679 | 24 点游戏 | 困难 | 思路、暴力 |
685 | 冗余连接 II | 困难 | 并查集 |
696 | 计数二进制子串 | 简单 | 思路 |
700 | 二叉搜索树中的搜索 | 简单 | 二叉树、dfs |
701 | 二叉搜索树中的插入操作 | 中等 | 二叉树、BST、DFS |
718 | 最长重复子数组 | 中等 | dp |
726 | 原子的数量 | 困难 | 递归 |
733 | 图像渲染 | 简单 | bfs |
763 | 划分字母区间 | 中等 | 思路 |
820 | 单词的压缩编码 | 中等 | 字典树、思路 |
830 | 较大分组的位置 | 简单 | 思路 |
841 | 钥匙和房间 | 中等 | bfs |
845 | 数组中的最长山脉 | 中等 | 思路 |
887 | 鸡蛋掉落 | 困难 | 记忆化搜索+二分、dp |
912 | 排序数组 | 中等 | 快速排序 |
914 | 卡牌分组 | 简单 | 思路 |
925 | 长按键入 | 简单 | 简单逻辑 |
941 | 有效的山脉数组 | 简单 | 思路 |
968 | 监控二叉树 | 困难 | dfs、二叉树 |
977 | 有序数组的平方 | 简单 | 排序 |
983 | 最低票价 | 中等 | dp |
1002 | 查找常用字符 | 简单 | 计数 |
1024 | 视频拼接 | 中等 | 贪心 |
1030 | 距离顺序排列矩阵单元格 | 简单 | bfs |
1095 | 山脉数组中查找目标值 | 困难 | 二分 |
1111 | 有效括号的嵌套深度 | 中等 | 思路 |
1162 | 地图分析 | 中等 | bfs |
1248 | 统计「优美子数组」 | 中等 | 思路、前缀和 |
1277 | 统计全为 1 的正方形子矩阵 | 中等 | dp |
1356 | [根据数字二进制下 1 的数目排序](LeetCode/根据数字二进制下 1 的数目排序.md) | 简单 | 思路、位运算 |
1365 | 有多少小于当前数字的数字 | 简单 | 计数排序 |
1518 | 换酒问题 | 简单 | 模拟 |
LeetCode 面试题 | 题解 | 难度 | 题目类型 |
---|---|---|---|
面试题 01.07 | 旋转矩阵 | 中等 | 模拟、思路 |
面试题13 | 机器人的运动范围 | 中等 | 思路 |
面试题 16.03. | 交点 | 困难 | 计算几何、叉积 |
面试题 08.11 | 硬币 | 中等 | dp、背包 |
面试题51 | 数组中的逆序对 | 困难 | 线段树、树状数组 |
面试题56 - I | 数组中数字出现的次数 | 中等 | 位运算 |
面试题24/206 | 反转链表 | 简单 | 递归 |
面试题 08.03 | 魔术索引 | 简单 | 二分 |
剑指offer 20 | 表示数值的字符串 | 中等 | DFA、状态机 |
LeetCode LCP | 题解 | 难度 |
---|---|---|
LCP 13 | 寻宝 | 困难 |
LCP 18 | 早餐组合 | 简单 |
LCP 30 | 魔塔游戏 | 中等 |