剑指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个数