《剑指Offer》Java实现,包含了大部分的题目和测试代码
GitHub地址:click me
csdn博客地址:click me
题目 | 代码 | 测试 | 博客地址 |
---|---|---|---|
面试题3:数组中重复的数字 | 代码 | 测试 | 博客地址 |
面试题4:二维数组的查找 | 代码 | 测试 | 博客地址 |
面试题5:替换空格 | 代码 | 测试 | 博客地址 |
面试题6:从头到尾打印链表 | 代码 | 测试 | 博客地址 |
面试题7:重建二叉树 | 代码 | 测试 | 博客地址 |
面试题8:二叉树的下一个节点 | 代码 | 测试 | 博客地址 |
面试题9:用两个栈实现队列 | 代码 | 测试 | 博客地址 |
面试题10:斐波那契数列 | 代码 | 测试 | 博客地址 |
面试题:变态跳台阶 | 代码 | 测试 | 博客地址 |
面试题:跳台阶 | 代码 | 测试 | 博客地址 |
面试题11:旋转数组的最小数字 | 代码 | 测试 | 博客地址 |
面试题12:矩阵中的路径 | 代码 | 测试 | 博客地址 |
面试题13:机器人的运动范围 | 代码 | 测试 | 博客地址 |
面试题14:剪绳子 | 代码 | 测试 | 博客地址 |
面试题15:二进制中1的个数 | 代码 | 测试 | 博客地址 |
面试题16:数值的整数次方 | 代码 | 测试 | 博客地址 |
面试题17:打印从1到最大的n位数 | 用递归解决 | 测试 | 博客地址 |
面试题17:打印从1到最大的n位数 | 用递增的方式解决 | 测试 | 博客地址 |
面试题18(1):在O(1)时间内删除链表节点 | 代码 | 测试 | 无 |
面试题18(2):删除链表中重复的节点 | 代码 | 测试 | 博客地址 |
面试题19:正则表达式匹配 | 代码 | 测试 | 博客地址 |
面试题20:表示数值的字符串 | 代码 | 测试 | 博客地址 |
面试题21:调整数组顺序使奇数位于偶数前面 | 代码 | 测试 | 博客地址 |
面试题22:链表中的倒数第k个节点 | 代码 | 测试 | 博客地址 |
面试题23:链表中环的入口节点 | 代码 | 测试 | 博客地址 |
面试题24:反转链表 | 代码 | 测试 | 博客地址 |
面试题25:合并两个排序的链表 | 代码 | 测试 | 博客地址 |
面试题26:树的子结构 | 代码 | 测试 | 博客地址 |
面试题27:二叉树的镜像 | 代码 | 测试 | 博客地址 |
面试题28:对称的二叉树 | 代码 | 测试 | 博客地址 |
面试题29:顺时针打印矩阵 | 代码 | 测试 | 博客地址 |
面试题30:包含min函数的栈 | 代码 | 测试 | 博客地址 |
面试题31:栈的压入、弹出序列 | 代码 | 没写 | 博客地址 |
面试题32(1):从上往下不分行打印二叉树 | 代码 | 测试 | 博客地址 |
面试题32(2):分行从上到下打印二叉树 | 代码 | 测试 | 博客地址 |
面试题32(3):之字形打印二叉树 | 代码 | 测试 | 博客地址 |
面试题33:二叉搜索树的后序遍历序列 | 代码 | 测试 | 博客地址 |
面试题34:二叉树中和为某一值的路径 | 代码 | 测试 | 博客地址 |
面试题35:复杂链表的复制 | 代码 | 测试 | 博客地址 |
面试题36:二叉搜索树与双向链表 | 代码 | 测试 | 博客地址 |
面试题37:序列化二叉树 | 代码 | 测试 | 博客地址 |
面试题38:字符串的排列 | 代码 | 测试 | 博客地址 |
面试题:求字符串的所有组合 | 代码 | 测试 | 博客地址 |
面试题39:数组中出现次数超过一半的数字 | 解法1:使用哈希表 | 测试 | 博客地址 |
面试题39:数组中出现次数超过一半的数字 | 解法2:排序后统计 | 测试 | 博客地址 |
面试题39:数组中出现次数超过一半的数字 | 解法3:基于Partition函数的时间复杂度为O(n)的算法 | 测试 | 博客地址 |
面试题39:数组中出现次数超过一半的数字 | 解法4:根据数组特点找出时间复杂度为O(n)的算法 | 测试 | 博客地址 |
面试题40:最小的k个数 | 解法1:partition算法 | 测试 | 博客地址 |
面试题40:最小的k个数 | 解法2:优先队列 | 测试 | 博客地址 |
面试题40:最小的k个数 | 解法3:红黑树 | 测试 | 博客地址 |
面试题41:数据流的中位数 | 解法1:有优先队列 | 测试 | 博客地址 |
面试题41:数据流的中位数 | 解法2:红黑树 | 测试 | 博客地址 |
面试题42:连续子数组的最大和 | 代码 | 测试 | 博客地址 |
面试题43:1~n整数中1出现的次数 | 代码 | 测试 | 博客地址 |
面试题44:数字序列中某一位的数字 | 代码 | 测试 | 无 |
面试题45:把数组排成最小的数 | 代码 | 测试 | 博客地址 |
面试题46:把数字翻译成字符串 | 未完成 | 未完成 | 无 |
面试题47:礼物的最大价值 | 未完成 | 未完成 | 无 |
面试题48:最长不含重复字符的字符串 | 未完成 | 未完成 | 无 |
面试题49:丑数 | 代码 | 测试 | 博客地址 |
面试题50(1):第一个只出现一次的字符 | 代码 | 测试 | 博客地址 |
面试题50(2):字符流中第一个只出现一次的字符 | 代码 | 测试 | 博客地址 |
面试题51:数组中的逆序对 | 代码 | 测试 | 博客地址 |
面试题52:两个链表的第一个公共节点 | 代码 | 测试 | 博客地址 |
面试题53(1):数字在排序数组中出现的次数 | 代码 | 测试 | 博客地址 |
面试题53(2):0~n-1中缺失的数字 | 未完成 | 未完成 | 无 |
面试题53(3):数组中数值和下标相等的元素 | 未完成 | 未完成 | 无 |
面试题54:二叉搜索树的第k大节点 | 代码 | 测试 | 博客地址 |
面试题55(1):二叉树的深度 | 代码 | 测试 | 博客地址 |
面试题55(2):平衡二叉树 | 代码 | 测试 | 博客地址 |
面试题56(1):数组中只出现一次的两个数字 | 代码 | 测试 | 博客地址 |
面试题56(2):数组中唯一只出现一次的元素 | 未完成 | 未完成 | 无 |
面试题57(1):和为S的数字 | 代码 | 测试 | 博客地址 |
面试题57(2):和为S的连续正数序列 | 代码 | 测试 | 博客地址 |
面试题58(1):翻转单词顺序 | 代码 | 测试 | 博客地址 |
面试题58(2):左旋转字符串 | 代码 | 测试 | 博客地址 |
面试题59(1):滑动窗口的最大值 | 代码 | 测试 | 博客地址 |
面试题59(2):队列的最大值 | 未完成 | 未完成 | 无 |
面试题60:n个骰子的点数 | 未完成 | 未完成 | 无 |
面试题61:扑克牌中的顺子 | 代码 | 测试 | 博客地址 |
面试题62:圆圈中最后剩下的数字 | 未完成 | 未完成 | 无 |
面试题63:股票的最大利润 | 未完成 | 未完成 | 无 |
面试题64:求1+2+......+n | 代码 | 测试 | 博客地址 |
面试题65:不用加减乘除做加法 | 代码 | 测试 | 博客地址 |
面试题66:构建乘积数组 | 代码 | 测试 | 博客地址 |
面试题67:把字符串转换成整数 | 代码 | 测试 | 博客地址 |
面试题68:树中两个节点的最低公共祖先 | 未完成 | 未完成 | 无 |