
《剑指Offer》题解(Java实现)
文章平均质量分 95
ellisonzhao
简单的事情重复做,重复的事情用心做,用心的事情坚持做。懂得越多,不懂的越多。
展开
-
面试题13:机器人的运动范围
文章目录机器人的运动范围题目描述回溯bfs机器人的运动范围题目描述地上有一个 m 行和 n 列的方格。一个机器人从坐标 (0,0) 的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当 k 为 18 时,机器人能够进入方格 (35,37),因为 3+5+3+7 = 18。但是,它不能进入方格(35,38),因为 3+5+3+...原创 2019-11-27 10:36:48 · 185 阅读 · 0 评论 -
面试题12:矩阵中的路径
文章目录矩阵中的路径题目描述思路一:BFS形式思路二:回溯形式矩阵中的路径题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的 3 X 4 矩阵...原创 2019-11-27 10:35:54 · 177 阅读 · 0 评论 -
面试题18:删除链表的结点
文章目录面试题 18:删除链表的结点题目一:在O(1)时间删除链表结点题目描述思路题目二:删除链表中重复的节点题目描述思路面试题 18:删除链表的结点题目一:在O(1)时间删除链表结点题目描述给定单向链表的一个节点指针,定义一个函数在 $O(1)$ 时间删除该结点。假设链表一定存在,并且该节点一定不是尾节点。样例输入:链表 1->4->6->8 删掉节点...原创 2019-11-26 19:51:30 · 192 阅读 · 0 评论 -
面试题14:剪绳子
文章目录剪绳子题目描述思路动态规划贪心剪绳子题目描述给你一根长度为 n 的绳子,请把绳子剪成 m 段(m、n 都是整数,2 ≤ n ≤ 58 并且 m ≥ 2)。每段的绳子的长度记为 k[0]、k[1]、……、k[m]。k[0] × k[1] × … × k[m] 可能的最大乘积是多少?例如当绳子的长度是 8 时,我们把它剪成长度分别为 2、3、3 的三段,此时得到最大的乘积 18。样...原创 2019-11-09 14:45:11 · 214 阅读 · 0 评论 -
面试题11:旋转数组的最小数字
文章目录旋转数组的最小数字题目描述思路一:直接比较思路二:二分查找搜索旋转排序数组题目描述样例思路一:三次二分思路二:一次二分旋转数组的最小数字LeetCode链接: 153. Find Minimum in Rotated Sorted Array题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 ...原创 2019-10-25 14:13:16 · 131 阅读 · 0 评论 -
面试题08:二叉树的下一个结点
文章目录二叉树的下一个结点题目描述思路二叉树的下一个结点题目描述给定一棵二叉树的其中一个节点,请找出中序遍历序列的下一个节点。注意:如果给定的节点是中序遍历序列的最后一个,则返回空节点;二叉树一定不为空,且给定的节点一定不是空节点;样例假定二叉树是:[2, 1, 3, null, null, null, null], 给出的是值等于 2 的节点。则应返回值等于 3 的节点。解释...原创 2019-10-15 13:52:34 · 107 阅读 · 0 评论 -
面试题09:用两个栈实现队列
文章目录栈和队列的模拟实现用两个栈实现队列题目描述思路代码相关题目:用队列实现栈题目描述思路一:用两个队列思路二:只用一个队列栈和队列的模拟实现用两个栈实现队列232. Implement Queue using Stacks题目描述请用栈实现一个队列,支持如下四种操作:push(x) —— 将元素x插到队尾;pop() —— 将队首的元素弹出,并返回该元素;peek() —...原创 2019-10-03 16:16:34 · 335 阅读 · 0 评论 -
面试题06:从尾到头打印链表
文章目录面试题 6:从尾到头打印链表题目描述思路一:栈思路二:递归思路三:集合的 reverse 方法面试题 6:从尾到头打印链表题目描述输入一个链表的头结点,按照 从尾到头 的顺序返回节点的值。返回一个 ArrayList。如果修改链表结构,可以先利用头插法将链表逆置,然后再依次输出结点。这个方法在 “面试题24:反转链表” 中会用到不修改链表结构,主要就利用栈“后进先出”的特性...原创 2019-09-18 16:15:46 · 220 阅读 · 0 评论 -
面试题05:替换空格
文章目录面试题 5:替换空格题目描述方法一:使用 replace()方法二:使用 append()方法三:使用双指针面试题 5:替换空格题目描述请实现一个函数,把字符串中的每个空格替换成 "%20"。例如,当字符串为 We Are Happy.,则经过替换之后的字符串为 We%20Are%20Happy.。方法一:使用 replace()public String replaceSpac...原创 2019-09-02 14:23:14 · 213 阅读 · 0 评论 -
面试题07:重建二叉树
文章目录从前序与中序遍历序列构造二叉树题目描述解答思路一:递归思路二:非递归从前序与中序遍历序列构造二叉树105. Construct Binary Tree from Preorder and Inorder Traversal题目描述根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15...原创 2019-08-29 15:04:09 · 184 阅读 · 0 评论 -
面试题 04:二维数组中的查找
文章目录面试题 04:二维数组中的查找题目描述解答面试题 04:二维数组中的查找题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。样例输入数组:[ [1,2,8,9], [2,4,9,12], [4,7,10,13], ...原创 2019-07-21 16:39:43 · 266 阅读 · 0 评论 -
面试题 10:斐波那契数列
文章目录面试题 10:斐波那契数列题目一:求斐波那契数列的第n项题目描述递归非递归(迭代)题目二:跳台阶题目描述题目三:变态跳台阶题目描述状态枚举题目四:矩形覆盖题目描述面试题 10:斐波那契数列题目一:求斐波那契数列的第n项题目描述输入一个整数 n ,求斐波那契数列的第 n 项。假定从 0 开始,第 0 项为 0。( n <= 39 )样例输入整数 n=5 返回 5...原创 2019-07-30 11:51:29 · 325 阅读 · 0 评论 -
面试题03:数组中重复的数字
文章目录面试题 03:数组中重复的数字题目一:找出数值中重复的数字题目描述思路一:排序思路二:哈希表思路三:交换元素题目二:不修改数组找出重复的数字题目描述思路一:抽屉原理+分治法思路二:找到“环”的入口相似题目面试题 03:数组中重复的数字题目一:找出数值中重复的数字题目描述在一个长度为 n 的数组里的所有数字都在 0 ~ n-1 的范围内。 数组中某些数字是重复的,但不知道有几个数字是...原创 2019-07-14 20:52:12 · 281 阅读 · 0 评论 -
面试题02:实现Singleton模式
文章目录实现Singleton模式单例模式介绍意图主要解决问题何时使用如何解决关键代码优点缺点使用场景几种实现方式第一种:懒汉式,线程不安全第二种:懒汉式,线程安全第三种:饿汉式第四种:饿汉式,变种第五种:双检锁/双重校验锁(DCL,即 double-checked locking)第六种:登记式/静态内部类第七种:枚举总结参考资料实现Singleton模式单例模式介绍单例模式(Single...原创 2019-07-03 21:54:59 · 187 阅读 · 0 评论