SwordtoOffer 自己写的剑指Offer的java实现,oj大部分使用的是牛客,部分题写了多种解法,如果你有不同的解法,也可以写上来; 链表 二叉树 递归 栈 数组/排序 关于数 位运算 回溯 字符串 链表 : 5:从尾到头打印链表 13: O(1) 删除链表节点 15: 链表倒数第k个结点 16:反转链表 17:合并两个排序的链表 26:复杂链表的复制 27:二叉搜索树与双向链表 37:两个链表的公共结点 二叉树: 6:重建二叉树 18:树的子结构 19:二叉树镜像 23:从上往下打印二叉树 24:二叉搜索树的后序遍历序列 25:二叉树中和为某一值得路径 27:二叉搜索树与双向链表 39:二叉树的深度 50:树结点的最低公共祖先 57: 删除链表中的重复结点 58:二叉树的下一个结点 59:对称二叉树 60: 把二叉树打印成多行 61:按之字形顺序打印二叉树 62:二叉树序列化 63:二叉搜索树的第k个结点 递归: ps: 列一些比较经典,或者难懂的 9:斐波那契数列 ps:二叉树,链表出现递归很普遍的: 5:从尾到头打印链表 16:反转链表 6:重建二叉树 18:树的子结构 19:二叉树镜像 27:二叉搜索树与双向链表 39:二叉树的深度 28:字符串的排列 栈: 7:两个栈实现队列 21:包含min函数的栈 22:栈的压入、弹出序列 字符串: 4:替换空格 28:字符串的排列 35:第一个只出现一次的字符 42:左旋字符串 49:字符串转换成整数 53:正则表达式匹配 55:字符流中第一个不重复的字符 64:数据流中的中位数 数组/排序: 8:旋转数组的最小值 14:调整数组,奇数在前 29:数组中出现次数超过一般的数字 30:最小的k个数 31:连续子数组的最大和 33:把数组排成最小的数 36:数组的逆序对 38:数字在排序数组中的出现次数 40:数组中只出现过一次的数字 41:和为s的连续正数序列 51:数组中重复的数字 52:构建乘积数组 65:滑动窗口的最大值 关于数的: 11:数值的整数次方 12:打印1到最大的 n 位数 32:整数1出现的次数 33:把数组排成最小的数 34:丑数 45:圆圈中最后剩余的数 46:求1+2+....+n 位运算: 10:二进制中一的个数 40:数组中只出现过一次的数字 47: 不用加减乘除做加法运算 回溯 66:矩阵路径 67:机器人的运动范围 其他 43:骰子 44:扑克牌顺子