剑指offer C++
剑指offer C++实现、题解
$.cpp$ 代码同步更新于 $github$
数据结构
链表
| 题号 | 难度 | 题解 |
|---|---|---|
| JZ6 | 简单 | 从尾到头打印链表 |
| JZ24 | 简单 | 反转链表 |
| JZ25 | 简单 | 合并两个排序的列表 |
| JZ23 | 中等 | 链表中环的入口结点 |
| JZ52 | 简单 | 两个链表的第一个公共节点 |
| JZ22 | 简单 | 链表中倒数最后k个结点 |
| JZ35 | 较难 | 复杂链表的复制 |
| JZ76 | 中等 | 删除链表中重复的节点 |
| JZ18 | 简单 | 删除链表的节点 |
树
| 题号 | 难度 | 题解 |
|---|---|---|
| JZ55 | 简单 | 二叉树的深度 |
| JZ77 | 中等 | 按之字形顺序打印二叉树 |
| JZ54 | 中等 | 二叉搜索树的第k个节点 |
| JZ7 | 中等 | 重建二叉树 |
| JZ26 | 中等 | 树的子结构 |
| JZ27 | 简单 | 二叉树的镜像 |
| JZ32 | 简单 | 从上往下打印二叉树 |
| JZ33 | 中等 | 二叉搜索树的后序遍历序列 |
| JZ82 | 简单 | 二叉树中和为某一值的路径(一) |
| JZ34 | 中等 | 二叉树中和为某一值的路径(二) |
| JZ36 | 中等 | 二叉搜索树与双向链表 |
| JZ79 | 简单 | 判断是不是平衡二叉树 |
| JZ8 | 中等 | 二叉树的下一个结点 |
| JZ28 | 简单 | 对称的二叉树 |
| JZ78 | 中等 | 把二叉树打印成多行 |
| JZ37 | 较难 | 序列化二叉树 |
| JZ84 | 中等 | 二叉树中和为某一值的路径(三) |
| JZ86 | 中等 | 在二叉树中找到两个节点的最近公共祖先 |
| JZ68 | 简单 | 二叉搜索树的最近公共祖先 |
队列&栈
| 题号 | 难度 | 题解 |
|---|---|---|
| JZ9 | 简单 | 用两个栈实现队列 |
| JZ30 | 简单 | 包含min函数的栈 |
| JZ31 | 中等 | 栈的压入、弹出序列 |
| JZ73 | 简单 | 反转单词序列 |
| JZ59 | 较难 | 滑动窗口的最大值 |
算法
搜索算法
| 题号 | 难度 | 题解 |
|---|---|---|
| JZ53 | 简单 | 数字在升序数组中出现的次数 |
| JZ4 | 中等 | 二维数组中的查找 |
| JZ11 | 简单 | 旋转数组的最小数字 |
| JZ38 | 中等 | 字符串的排列 |
| JZ44 | 简单 | 数字序列中某一位的数字 |
动态规划
| 题号 | 难度 | 题解 |
|---|---|---|
| JZ42 | 简单 | 连续子数组的最大和 |
| JZ85 | 中等 | 连续子数组的最大和(二) |
| JZ69 | 简单 | 跳台阶 |
| JZ10 | 入门 | 斐波那契数列 |
| JZ19 | 较难 | 正则表达式匹配 |
| JZ71 | 简单 | 跳台阶扩展问题 |
| JZ70 | 中等 | 矩形覆盖 |
| JZ63 | 简单 | 买卖股票的最好时机(一) |
| JZ47 | 中等 | 礼物的最大价值 |
| JZ48 | 中等 | 最长不含重复字符的子字符串 |
| JZ46 | 中等 | 把数字翻译成字符串 |
回溯
| 题号 | 难度 | 题解 |
|---|---|---|
| JZ12 | 中等 | 矩阵中的路径 |
| JZ13 | 较难 | 机器人的运动范围 |
排序
| 题号 | 难度 | 题解 |
|---|---|---|
| JZ3 | 简单 | 数组中重复的数字 |
| JZ51 | 中等 | 数组中的逆序数 |
| JZ40 | 中等 | 最小的K个数 |