剑指Offer
自己写的剑指Offer的java实现,oj大部分使用的是牛客,部分题写了多种解法,如果你有不同的解法,也可以写上来;
链表 二叉树 递归 栈 数组/排序 关于数 位运算 回溯 字符串
5:从尾到头打印链表
13: O(1) 删除链表节点
15: 链表倒数第k个结点
16:反转链表
17:合并两个排序的链表
26:复杂链表的复制
27:二叉搜索树与双向链表
37:两个链表的公共结点
6:重建二叉树
18:树的子结构
19:二叉树镜像
23:从上往下打印二叉树
24:二叉搜索树的后序遍历序列
25:二叉树中和为某一值得路径
39:二叉树的深度
50:树结点的最低公共祖先
57: 删除链表中的重复结点
58:二叉树的下一个结点
59:对称二叉树
60: 把二叉树打印成多行
61:按之字形顺序打印二叉树
62:二叉树序列化
63:二叉搜索树的第k个结点
ps: 列一些比较经典,或者难懂的
9:斐波那契数列
ps:二叉树,链表出现递归很普遍的:
28:字符串的排列
7:两个栈实现队列
21:包含min函数的栈
22:栈的压入、弹出序列
4:替换空格
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出现的次数
34:丑数
45:圆圈中最后剩余的数
46:求1+2+….+n
10:二进制中一的个数
47: 不用加减乘除做加法运算
66:矩阵路径
67:机器人的运动范围
43:骰子
44:扑克牌顺子