牛客网剑指 Offer 刷题题解 GoOffer Algorithm # Title Solution type 1 二维数组中的查找 Java 数组 2 替换空格 Java 字符串 3 从尾到头打印链表 Java 链表 4 重建二叉树 Java 树 5 用两个栈实现队列 Java 队列和栈 6 旋转数组的最小数字 Java 查找和排序 7 斐波拉契数列 Java 递归和循环 8 跳台阶 Java 递归和循环 9 变态跳台阶 Java 递归和循环 10 矩形覆盖 Java 递归和循环 11 二进制中1的个数 Java 位运算 12 数值的整数次方 Java 代码的完整性 13 调整数组顺序使奇数为于偶数前面 Java 代码的完整性 14 链表中倒数第k个结点 Java 代码的鲁棒性 15 反转链表 Java 代码的鲁棒性 16 合并两个排序的链表 Java 代码的鲁棒性 17 树的子结构 Java 代码的鲁棒性 18 二叉树的镜像 Java 面试思路 19 顺时针打印矩阵 Java 画图让抽象形象化 20 包含min函数的栈 Java 举例让抽象具体化 21 栈的压入、弹出序列 Java 举例让抽象具体化 22 从上往下打印二叉树 Java 举例让抽象具体化 23 二叉搜索树的后序遍历序列 Java 举例让抽象具体化 24 二叉树中和为某一值的路径 Java 举例让抽象具体化 25 复杂链表的复制 Java 分解让复杂问题简单 26 二叉搜索树与双向链表 Java 分解让复杂问题简单 27 字符串的排列 Java 分解让复杂问题简单 28 数组中出现次数超过一半的数字 Java 时间效率 29 最小的K个数 Java 时间效率 30 连续子序列的最大和 Java 时间效率 31 整数中1出现的次数(从1到n整数中1出现的次数) Java 时间效率 32 把数组排成最小的数 Java 时间效率 33 丑数 Java 时间空间效率的平衡 34 第一次只出现一次的字符位置 Java 时间空间效率的平衡 35 数组中的逆序对 Java 时间空间效率的平衡 36 两个链表的第一个公共结点 Java 时间空间效率的平衡 37 数字在排序数组中出现的次数 Java 知识迁移能力 38 二叉树的深度 Java 知识迁移能力 39 平衡二叉树 Java 知识迁移能力 40 数组中只出现一次的数字 Java 知识迁移能力 41 和为S的连续整数序列 Java 知识迁移能力 42 和为S的两个数字 Java 知识迁移能力 43 左旋转字符串 Java 知识迁移能力 44 翻转单词顺序列 Java 知识迁移能力 45 扑克牌顺子 Java 抽象建模能力 46 孩子们的游戏(圆圈中最后剩下的数) Java 抽象建模能力 47 求1+2+3+...+n Java 发散思维能力 48 不用加减乘除做加法 Java 发散思维能力 49 将字符串转化为整数 Java 综合 50 数组中重复的数字 Java 数组 51 构建乘积数组 Java 数组 52 正则表达式匹配 Java 字符串 53 表示数值的字符串 Java 字符串 54 字符流中第一个不重复的字符 Java 字符串 55 链表中环的入口结点 Java 链表 56 删除链表中重复的结点 Java 链表 57 二叉树的下一个结点 Java 树 58 对称的二叉树 Java 树 59 按之字形打印顺序打印二叉树 Java 树 60 把二叉树打印成多行 Java 树 61 序列化二叉树 Java 树 62 二叉搜索树的第k个结点 Java 树 63 数据流中的中位数 Java 树 64 滑动窗口的最大值 Java 栈和队列 65 矩阵中的路径 Java 回溯法 66 机器人的运动范围 Java 回溯法