剑指offer
destinysh233
这个作者很懒,什么都没留下…
展开
-
《剑指offer》面试题27:二叉树的镜像(Java实现)
文章目录题目解题思路题目操作给定的二叉树,将其变换为源二叉树的镜像。输入描述解题思路/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = v...原创 2020-05-02 15:29:29 · 127 阅读 · 0 评论 -
《剑指offer》面试题26:树的子结构(Java实现)
文章目录题目解题思路题目输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)解题思路首先要找出A树的哪些节点和B树的根节点的值相等,这才有可能使得B称为A的一个子结构。之后再对与B树根节点值相等的子树判断每一个叶子节点的值是否相等。需要写两个函数,一个找出相等的节点,一个判断叶子节点是否相等。都是用递归实现的。/**public class ...原创 2019-12-27 15:32:55 · 104 阅读 · 0 评论 -
《剑指offer》面试题25:合并两个排序的链表(Java实现)
文章目录题目解题思路题目输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要新合成后的链表满足单调不减规则。解题思路分别遍历两个链表,每一个都比较两个链表的头结点,把小的那一个头结点放到一个新定义的链表中,因为每一个比较合并的过程都是一模一样的,所以可以使用递归来实现。这里要注意输入的链表为空的特殊情况。/*public class ListNode { int va...原创 2019-12-27 14:44:30 · 133 阅读 · 1 评论 -
《剑指offer》面试题24:反转链表(Java实现)
文章目录题目解题思路题目输入一个链表,反转链表后,输出新链表的表头。解题思路定义三个指针,分别指向当前遍历到的节点、他前一个节点和后一个节点。/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/...原创 2019-12-26 16:40:47 · 170 阅读 · 0 评论 -
《剑指offer》面试题22:链表中倒数第k个结点(Java实现)
文章目录题目解题思路题目输入一个链表,输出该链表中倒数第k个结点。解题思路两个指针,第一个指针从链表的头指针开始遍历向前走k-1步,第二个指针保持不动;从第k步开始,第二个指针也开始从链表的头指针开始遍历、由于两个指针的距离保持在k-1,当第一个指针到达链表的尾结点时,第二个指针正好指向倒数第k个节点。/*public class ListNode { int val; ...原创 2019-12-24 11:05:19 · 94 阅读 · 0 评论 -
《剑指offer》面试题21:调整数组顺序使奇数位于偶数前面(Java实现)
文章目录题目解题思路题目输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解题思路新建了两个数组,一个放奇数,一个放偶数public class Solution { public void reOrderArray(int [] array) { ...原创 2019-12-24 10:37:35 · 104 阅读 · 0 评论 -
《剑指offer》面试题xx:数值的整数次方(Java实现)
文章目录题目解题思路题目给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0解题思路不能使用平方库函数public class Solution { public double Power(double base, int exponent) { double re...原创 2019-12-24 09:33:09 · 69 阅读 · 0 评论 -
《剑指offer》面试题15:二进制中1的个数(Java实现)
文章目录题目解题思路java位操作题目输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。解题思路首先把n和1做与运算,判断n的最低位是不是为1。接着把1左移一位得到2,再和n做与运算,就能判断n的次低位是不是1…反复左移,每次都能判断n的其中一位是不是1。public class Solution { public int NumberOf1(int n) { ...原创 2019-12-23 21:44:19 · 153 阅读 · 1 评论 -
《剑指offer》面试题xx:矩形覆盖(Java实现)
文章目录题目解题思路题目我们可以用2∗12*12∗1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2∗12*12∗1的小矩形无重叠地覆盖一个2∗n2*n2∗n的大矩形,总共有多少种方法?解题思路也是斐波那契数列的应用。target == 0 -> 0target == 1 -> 1target == 2 -> 2target == 3 -> 3targ...原创 2019-12-23 10:11:01 · 80 阅读 · 0 评论 -
《剑指offer》面试题xx:变态跳台阶(Java实现)
文章目录题目解题思路题目一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解题思路· f(1) = 1· f(2) 会有两种跳法,一次1阶或者2阶,这回归到了问题f(1),f(2) = f(2-1) + f(2-2)· f(3) 会有三种跳法,1阶、2阶、3阶,那么就是第一次跳出1阶后面剩下:f(3-1);第一次跳出2阶,剩下...原创 2019-12-22 22:26:59 · 138 阅读 · 0 评论 -
《剑指offer》面试题xx:跳台阶(Java实现)
文章目录题目解题思路题目一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。解题思路斐波那契数列n=1时,跳法=1n=2时,跳法=2n=3时,跳法=3n=4时,跳法=5…规律为斐波那契数列.public class Solution { public int JumpFloor(int target) ...原创 2019-12-22 22:06:06 · 73 阅读 · 0 评论 -
《剑指offer》面试题10:斐波那契数列(Java实现)
文章目录题目解题思路题目大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39解题思路斐波那契数列:f(n)={0n=01n=1f(n−1)+f(n−2)n>1f(n)=\left\{\begin{matrix}0 & n=0\\ 1 & n=1\\ f(n-1)+f(n-2) & n&g...原创 2019-12-22 16:47:13 · 70 阅读 · 0 评论 -
《剑指offer》面试题11:旋转数组的最小数字(Java实现)
文章目录题目解题思路二分查找题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解题思路旋转之后的数组实际上可以划分为两个排序的子数组,而前面子数组的元素都大于或...原创 2019-12-22 16:08:15 · 90 阅读 · 0 评论 -
《剑指offer》面试题9:用两个栈实现队列(Java实现)
题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。目录栈(stack)java Stack类队列(queue)题目思路Bonus: 用两个队列实现栈栈(stack)又名堆栈,是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。是一种后进先出的数据结构。后进先出(LIFO-last in f...原创 2019-12-19 11:07:51 · 386 阅读 · 0 评论 -
《剑指offer》面试题7:重建二叉树(Java实现)
题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。二叉树树:除根节点之外每个节点都只有一个父节点,根节点没有父节点。除叶节点之外所有节点都有一个或多个子节点,叶节点没有子节点。父节点和子节点之间用指针链...原创 2019-12-19 09:52:20 · 109 阅读 · 0 评论 -
《剑指offer》面试题6:从尾到头打印链表(Java实现)
题目: 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。链表定义:链表是一种物理单元上非连续、非顺序的存储结构。数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中的每个元素)组成,结点可以在运行时动态生成。每个结点包括存储数据元素的数据域和存储下一个结点地址的指针域。链表和数组的区别:数组静态分配内存,链表动态分配内存。数组在内存中是连续的,...原创 2019-12-12 11:05:56 · 131 阅读 · 0 评论 -
《剑指offer》面试题5:替换空格(Java实现)
题目: 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。空格替换为%20的含义。 网络编程中,如果URL参数中含有特殊字符如空格,#等,则可能导致服务器端无法获得正确的参数值。空格的ASCII码为32,十六进制表示为0x20。用%加上ASCII码的两位十六进制表示来替换,即为%20。...原创 2019-12-11 10:47:11 · 79 阅读 · 0 评论 -
《剑指offer》面试题4:二维数组中的查找(Java实现)
题目: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路: 从右上角开始查找。如果该数字等于target,则查找过程结束;如果该数字小于要查找的target,则删除这个数字所在的列数;如果该数字大于target,则删除该数字所在行数。代码:pub...原创 2019-12-10 14:58:50 · 91 阅读 · 0 评论