随笔分类 -  剑指offer刷题ing

加油
摘要:输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) 贴一下牛客上精简代码(ps:自己是想不出来这么精简) 1 public class Soluti 阅读全文
posted @ 2020-01-16 22:46 hu啦啦啦 阅读(146) 评论(0) 推荐(0)
摘要:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 思路:二叉搜索树即左子树<根<右子树,若满足该条件即为二叉搜索树。通过寻找左子树和右子树范围来进行递归调用,最终返回结果。 代码: 1 public class 阅读全文
posted @ 2020-01-13 23:29 hu啦啦啦 阅读(98) 评论(0) 推荐(0)
摘要:从上往下打印出二叉树的每个节点,同层节点从左至右打印。 思路:就是写一个层序遍历代码,用队列将根、左孩子、右孩子有序入队最后再出队即可 1 import java.util.*; 2 /** 3 public class TreeNode { 4 int val = 0; 5 TreeNode le 阅读全文
posted @ 2020-01-13 22:45 hu啦啦啦 阅读(125) 评论(0) 推荐(0)
摘要:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的 阅读全文
posted @ 2020-01-13 00:32 hu啦啦啦 阅读(123) 评论(0) 推荐(0)
摘要:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 由于本身给了import java.util.Stack;所以感觉可以使用JDK自带的栈 思路:用两个栈进行记录,s1记录全部,s2记录各个时刻最小值 源码如下: 1 import java.ut 阅读全文
posted @ 2020-01-12 00:32 hu啦啦啦 阅读(111) 评论(0) 推荐(0)
摘要:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 解题思路:一次去掉一个外圈, 阅读全文
posted @ 2020-01-10 23:27 hu啦啦啦 阅读(118) 评论(0) 推荐(0)
摘要:操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 1 /** 2 public class TreeNode { 3 int val = 0 阅读全文
posted @ 2020-01-10 23:24 hu啦啦啦 阅读(97) 评论(0) 推荐(0)
摘要:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 大神解法(注释清晰容易理解) 1 public class Solution { 2 public static boolean HasSubtree(TreeNode root1, TreeNode roo 阅读全文
posted @ 2020-01-09 11:13 hu啦啦啦 阅读(130) 评论(0) 推荐(0)
摘要:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 个人思路:用两个指针分别记录两个链表,每次比较指针对应节点大小将较小的断链,当有一个链表为空则将另一个链表接到后面即可。 1 /* 2 public class ListNode { 3 int val; 阅读全文
posted @ 2020-01-06 09:30 hu啦啦啦 阅读(164) 评论(0) 推荐(0)
摘要:输入一个链表,反转链表后,输出新链表的表头。 个人思路:一个一个断链,断链之间用指针记录下。 1 /* 2 public class ListNode { 3 int val; 4 ListNode next = null; 5 6 ListNode(int val) { 7 this.val = 阅读全文
posted @ 2020-01-06 09:24 hu啦啦啦 阅读(97) 评论(0) 推荐(0)
摘要:输入一个链表,输出该链表中倒数第k个结点。 思路:使用两个指针一个指在头节点另一个指在第k个节点,进行循环使两指针同时向后移动,直到后指针指到链表尾部则前指针所指即为答案 代码: 1 /* 2 public class ListNode { 3 int val; 4 ListNode next = 阅读全文
posted @ 2019-12-29 23:41 hu啦啦啦 阅读(155) 评论(0) 推荐(0)
摘要:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 自己用了额外空间实现函数: 1 import java.util.*; 2 public class Solution { 3 p 阅读全文
posted @ 2019-12-29 23:03 hu啦啦啦 阅读(121) 评论(0) 推荐(0)
摘要:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 保证base和exponent不同时为0 代码如下: 1 public class Solution { 2 public double Power(double base, int ex 阅读全文
posted @ 2019-12-27 11:31 hu啦啦啦 阅读(119) 评论(0) 推荐(0)
摘要:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 重点掌握原码和补码的转换!!! 解题思路:对于正数使用模2取余法实现;对于负数先让它和2147483647(即:int类型下最大正数)与运算再按照正数的计算方法,最后加上一位符号位即可 代码如下: 1 public class Sol 阅读全文
posted @ 2019-12-27 11:07 hu啦啦啦 阅读(138) 评论(0) 推荐(0)
摘要:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 仍然使用递归方法(n==1时:1种方法;n==2时:2种方法;当n>3时:即最后一次为竖着覆盖(只需横向一格)或最后一次为横着覆盖(需横向两个) return f(n-1 阅读全文
posted @ 2019-12-27 10:13 hu啦啦啦 阅读(124) 评论(0) 推荐(0)
摘要:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 个人理解:假设最后一跳是1则跳法与前n-1个台阶有关;假设最后一条是2则跳法与前n-2个台阶有关;……;假设最后一跳是n-1则跳法与第一个台阶有关。最后结果为n-1项加和后再加1。 代码如 阅读全文
posted @ 2019-12-27 00:53 hu啦啦啦 阅读(114) 评论(0) 推荐(0)
摘要:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 递归解决问题:(分析)青蛙一次跳1级台阶或2级台阶则当台阶数位1时只有一种跳法,台阶数为2时有两种跳法,当台阶数大于2是则有台阶数-1/台阶数-2的递归条件 1 public cl 阅读全文
posted @ 2019-12-27 00:04 hu啦啦啦 阅读(108) 评论(0) 推荐(0)
摘要:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 F(n)= F(n-1)+ F(n-2)公式(n>2)且F(0)= 0,F(1)= 1,F(2)= 1 1 public class Solution { 2 public int F 阅读全文
posted @ 2019-12-26 20:56 hu啦啦啦 阅读(112) 评论(0) 推荐(0)
摘要:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 代码如下: 1 impor 阅读全文
posted @ 2019-12-26 19:17 hu啦啦啦 阅读(93) 评论(0) 推荐(0)
摘要:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 感觉很简洁了哈哈 1 import java.util.Stack; 2 3 public class Solution { 4 Stack<Integer> stack1 = new Stack<Integer> 阅读全文
posted @ 2019-12-26 15:11 hu啦啦啦 阅读(121) 评论(0) 推荐(0)