
剑指Offer
Coder_kiwi
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
剑指Offer第二版面试题16(java实现)
题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。解题思路指数为负时,可以先对指数求绝对值,算出次方的结果后再取倒数 当底数为0,指数为负时,会出现对0求倒数情况,要特殊处理 0的0次方在数学上没有意义,因此无论输出0还是1都是可以接受的 在计算次方的时候,除了简单的遍历,我们可以使用递归的思想,如下...原创 2019-03-14 16:21:26 · 273 阅读 · 0 评论 -
剑指Offer第二版面试题6(java实现)
题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。解题思路 一种方法是利用栈来实现; 另外一种方法是利用三个指针把链表反转,关键是 r 指针保存断开的节点。代码实现import java.util.ArrayList;import java.util.Stack;//这部分是利用栈来实现的。public ...原创 2019-03-12 21:58:57 · 339 阅读 · 0 评论 -
剑指Offer第二版面试题3(java实现)
题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。解题思路 最简单的就是用一个数组或者哈希表来存储已经遍历过的数字,但是这样需要开辟...原创 2019-03-12 21:30:08 · 303 阅读 · 0 评论 -
剑指Offer第二版面试题4(java实现)
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数解题思路 二维数组是有序的,从右上角来看,向左数字递减,向下数字递增。因此从右上角开始查找,当要查找的数字比右上角数字大时,下移;当要查找的数字比右上角...原创 2019-03-12 21:41:34 · 290 阅读 · 0 评论 -
剑指Offer第二版面试题7(java实现)
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路 我们知道,前序遍历的第一个节点就是树的根节点,所以我们先根据前序遍历序列的第一个数字创建根结点,接下来在...原创 2019-03-12 22:12:50 · 327 阅读 · 0 评论 -
剑指Offer第二版面试题12(java实现)
题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串”bcced”的路径,但是矩阵中不包含”abcb...原创 2019-03-13 20:56:27 · 398 阅读 · 0 评论 -
剑指Offer第二版面试题8(java实现)
题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。解题思路中序遍历:左 -> 根 -> 右分三种情况:如果当前节点为空,直接返回空; 如果当前节点有右子树,则返回右子树的最左子树; 如果当前节点没有右子树,再分两种情况: 看看当前节点是不是它的父节点的左子...原创 2019-03-12 22:16:51 · 294 阅读 · 0 评论 -
剑指Offer第二版面试题9(java实现)
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。解题思路 两个栈 stack1 和 stack2:push 动作都在 stack1 中进行, pop 动作在 stack2 中进行。当 stack2 不为空时,直接 pop,当 stack2 为空时,先把 stack1 中的元素 pop 出来,push 到 sta...原创 2019-03-12 22:22:57 · 319 阅读 · 0 评论 -
剑指Offer第二版面试题10(java实现)
题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39解题思路 公式: f(n) = n, n <= 1 f(n) = f(n-1) + f(n-2), n > 1 可以直接使用递归的方法:递归的方法可能会遇到Stack Overfl...原创 2019-03-12 22:40:29 · 247 阅读 · 0 评论 -
剑指Offer第二版面试题11(java实现)
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解题思路 采用二分查找法。 需要考虑三种情况:arra...原创 2019-03-13 18:33:15 · 252 阅读 · 0 评论 -
剑指Offer第二版面试题13(java实现)
题目描述 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?解题思路 ...原创 2019-03-13 21:00:20 · 266 阅读 · 0 评论 -
剑指Offer第二版面试题15(java实现)
题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。解题思路 如果一个整数不为0,那么这个整数至少有一位是1。如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,原来在1后面的所有的0都会变成1(如果最右边的1后面还有0的话)。其余所有位将不会受到影响。 举个例子:一个二进制数1100,从右边数起第三位是处于最右边的一个...原创 2019-03-13 21:14:39 · 267 阅读 · 0 评论 -
剑指Offer第二版面试题5(java实现)
题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解题思路 很简单,从后往前遍历就对了。代码实现public class Problem05 { public String replaceSpace(StringBuffer st...原创 2019-03-12 21:49:47 · 352 阅读 · 0 评论