自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 收藏
  • 关注

原创 牛客题霸--链表中倒数第k个结点

题目描述输入一个链表,输出该链表中倒数第k个结点使用栈压入,然后取出第k个public ListNode FindKthToTail(ListNode head,int k) { if(head==null) return null; if(k<=0) return null; Stack<ListNode> st = new Stack<ListNode>(); while(head!=null){

2020-11-11 19:03:00 169

原创 剑指Offer:数据流中的中位数(java)

题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。分析先用PriorityQueue来设置一个小顶堆和大顶堆,大顶堆用来存较小的数,从大到小排列;小顶堆...

2019-07-27 00:02:55 202

原创 剑指Offer:二叉搜索树的第k个结点(java版)

题目描述给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。分析二叉搜索树的中序遍历结果就是从小到大的排序,找到第k个即可。/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = nu...

2019-07-25 11:51:12 211

原创 已知 sqrt (2)约等于 1.414,要求不用数学库,求 sqrt (2)精确到小数点后 10 位

分析已知 sqrt(2)约等于 1.414,那么就可以在(1.4, 1.5)区间做二分查找,如: high=1.5 low=>1.4 mid => (high+low)/2=1.45判断 1.45*1.45>2 ? high=1.45 : low =>1.45退出条件:前后两次的差值的绝对值<=0.0000000001, 则可退出const...

2019-07-24 12:30:58 1280

原创 HAToCJmyVx

牛客网验证

2019-07-18 17:24:45 121

原创 剑指Offer:序列化二叉树(java版)

题目描述请实现两个函数,分别用来序列化和反序列化二叉树分析原理还是根据二叉树的遍历过程,用 ! 来分隔每个节点的值(方便反序列化),如果是空节点,就使用 # 来替代。如果不熟悉二叉树的遍历,请先看二叉树的遍历按先序遍历的序列化按层序遍历的序列化写法1:import java.util.*;public class Solution { String Serialize...

2019-07-15 14:34:37 215 1

原创 剑指Offer:把二叉树打印成多行(java版)

题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。其实就是层序遍历利用队列的先进先出利用队列,每个节点先加 left ,再加 right 进队列,这样下一层遍历时就是从左到右的顺序。public class Solution { ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) ...

2019-07-14 13:12:03 112

原创 剑指Offer:按之字形顺序打印二叉树(java版)

题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。借助2个栈实现stackA用来从左到右遍历,stackB用来从右到左的遍历。import java.util.*;public class Solution { public ArrayList<ArrayList<I...

2019-07-13 22:02:12 121

原创 剑指Offer:对称的二叉树(java版)

题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。递归递归判断:1、左子树的左子树和右子树的右子树是否相同2、左子树的右子树和右子树的左子树是否相同/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode ri...

2019-07-12 11:11:46 121

原创 剑指Offer:二叉树的下一个结点(java版)

题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。解析根据中序遍历的规则1、如果一个结点有右子树,那它下一个结点就是右子树的最左结点。2、如果没有右子树,则需要判断它有没有父结点并且是不是父结点的左子结点,是的话,就找到了。不是则要不断地向上找,直到某一个结点是其父结点的左子结点,返回这个父结点即...

2019-07-11 11:00:33 107

原创 剑指Offer:平衡二叉树(java版)

题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。使用后序遍历使用后序遍历,从下往上遍历,如果子树是平衡二叉树,则返回子树的高度;如果发现子树不是平衡二叉树,则直接停止遍历,这样至多只对每个结点访问一次。public class Solution { private boolean flag = true; public boolean IsBalanced_Solut...

2019-07-10 12:58:56 229

原创 剑指Offer:二叉树的深度(java版)

题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。递归public class Solution { public int TreeDepth(TreeNode root) { if(root == null) return 0; if(root.l...

2019-07-09 12:50:28 470

原创 剑指Offer:二叉搜索树与双向链表(java版)

题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。非递归中序遍历需要通过中序遍历,将节点的 left 指向 pre 前一个节点, right 指向中序遍历的下一个节点, pre 的 right 要指向当前节点/**public class TreeNode { int val = 0; TreeNo...

2019-07-03 10:56:11 184

原创 剑指Offer:二叉树中和为某一值的路径(java版)

题目描述输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。递归遍历import java.util.ArrayList;/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode rig...

2019-07-02 11:17:34 126

原创 剑指Offer:二叉搜索树的后序遍历序列(java版)

题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。分析后序遍历的最后一个节点是根节点,前面的可以分为2部分,大于根节点(右子树)和小于根节点(左子树)。左、右子树的后序遍历也符合这个规律,即最后一个节点是根节点,前面的分为大、小两部分。根据分析,这可以是一个递归。public class ...

2019-06-26 11:28:08 246

原创 剑指Offer:矩形覆盖(java版)

题目描述我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?动态规划其实就是斐波那契数列,f(n) = f(n-1) + f(n-2)public class Solution { public int RectCover(int target) { if(target<=2) retur...

2019-06-26 10:32:04 110

原创 剑指Offer:变态跳台阶(java版)

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。递归public class Solution { public int JumpFloorII(int target) { int sum=0; if(target<=0) return 0; ...

2019-06-26 10:28:33 170

原创 剑指Offer:跳台阶(java版)

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。递归public class Solution { public int JumpFloor(int target) { if(target<=0) return 0; if(target==1) r...

2019-06-26 10:24:27 95

原创 剑指Offer:斐波那契数列(java版)

题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)动态规划第 i 项 = 第 i-1 项 + 第 i-2 项public int Fibonacci(int n) { if(n<=1) return n; int m1=0; int m2=1; int sum=0...

2019-06-26 10:22:02 138

原创 剑指Offer:栈的压入、弹出序列(java版)

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)分析借用一个辅助的栈,遍历压栈顺序,先将第一个放入栈中,这里是1,然后判断栈顶元素...

2019-06-26 10:17:57 139

原创 剑指Offer:包含min函数的栈(java版)

题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。分析用2个栈,一个栈用来正常存储st1,另一个用来存当前的最小值st2。逻辑是:如果st2的栈顶大于要进栈的数,就st1、st2都添加;如果st2的栈顶小于这个数,st2就再添加一次自己的栈顶元素public class Solution { Stack<Integ...

2019-06-26 10:15:22 115

原创 剑指Offer:用2个栈实现队列(java版)

题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。分析用stack1专门来装元素,那么直接stack1.pop肯定是不行的,stack2用来出元素。规则是:只要stack2中有元素就pop,如果stack2为空,则将stack1中所有元素倒进satck2中,就是说,新元素只进stack1,元素出来只从stack2出来。这样,就能保证每次从stac...

2019-06-26 10:11:56 185

原创 剑指Offer:从上往下打印二叉树(层序遍历java版)

题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。利用队列FIFO特性创建一个队列,然后依次添加左、右子节点。从队列中取的时候,就相当于在每一层从左到右的取节点import java.util.ArrayList;/**public class TreeNode { int val = 0; TreeNode left = null; TreeNod...

2019-06-24 11:00:28 719

原创 剑指Offer:二叉树的镜像(java版)

题目描述操作给定的二叉树,将其变换为源二叉树的镜像。二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5递归版/*...

2019-06-10 10:52:48 148

原创 剑指Offer:树的子结构(java版)

题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)分析当root1和root2都不为null时,才开始判断,否则直接为false如果在root1中找到了对应的root2根节点,则进入匹配判断,如果完全匹配则返回true。如果匹配不上,那么就到root1的左子树去找,如果还匹配不上,就到root1的右子树去找。匹配的逻辑是:如果root2...

2019-06-04 15:33:36 110

原创 剑指Offer:重建二叉树(java版)

题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。分析首先先序遍历的第一个是整棵树的根节点,然后拿这个根节点去中序遍历中找到对应的位置。中序遍历中根节点左边是左子树上的点,右边是右子树上的点。根据...

2019-06-03 16:25:29 181

原创 二叉树:二叉树的遍历(先序、中序、后序、层序)

先序遍历递归版public class TraverseTree { public static class Node { public int value; public Node left; public Node right; public Node(int data) { this.value = data; } } public static void...

2019-06-03 14:16:45 338

原创 二叉树:判断一棵二叉树是否是平衡二叉树

如果每个节点构成的树都是平衡二叉树,那整体就是平衡二叉树。具体为:判断左子树是否平衡,判断右子树是否平衡,如果都平衡,那它们的高度差是否小于1public class BalanceTree { // 如果每个节点构成的树都是平衡二叉树,那整体就是平衡二叉树 // 具体为:判断左子树是否平衡,判断右子树是否平衡,如果都平衡,那它们的高度差是否小于1 public static class...

2019-06-03 13:48:34 206

原创 剑指Offer:机器人的运动范围(java版)

题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?分析构建一个辅助数组flag[][],如果...

2019-05-31 15:53:38 131

原创 剑指Offer:矩阵中的路径(java版)

题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符...

2019-05-30 14:14:21 134

原创 剑指Offer:滑动窗口的最大值(java版)

题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5};针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,...

2019-05-29 11:01:22 151

原创 springboot无法加载主类问题

1、启动报错误: 找不到或无法加载主类 org.spring.springboot.Application原因:可能在工程下面有多个module,然后module里面的iml配置文件不止一个解决方法:删除多余的iml文件,只剩余一个即可2、报错:cannot access org.springframework.context.ConfigurableApplicationContext也...

2019-05-28 16:44:21 539

原创 剑指Offer:删除链表中重复的结点(java版)

题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。例如,链表1->2->3->3->4->4->5 处理后为 1->2->5递归public class Solution { public ListNode deleteDuplication(ListNode pHead) { ...

2019-05-28 11:16:40 311

原创 剑指Offer:正则表达式匹配(java版)

题目描述请实现一个函数用来匹配包括’.‘和’ * ’ 的正则表达式。模式中的字符’.‘表示任意一个字符,而’ * '表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab * ac * a"匹配,但是与"aa.a"和"ab*a"均不匹配。分析分两种情况:pattern下一个字符为‘ * ’或不为‘ * ...

2019-05-23 10:44:55 310

原创 剑指Offer:字符流中第一个不重复的字符(java版)

题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。借助数组和另一辅助空间首先用一个byte[128]数组来记录出现过的字符(因为字符为1个字节,最多为128)然后用一个StringBuffer存储只出现过一次的字符(从...

2019-05-20 17:20:11 260

原创 剑指Offer:链表中环的入口结点(java版)

题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。使用HashSet存储结点如果已经存在,这个结点就是入环结点public class Solution { public ListNode EntryNodeOfLoop(ListNode pHead){ HashSet<ListNode> set = new HashSe...

2019-05-15 22:40:30 394

原创 剑指Offer:圆圈中最后剩下的数(约瑟夫环java版)

题目描述有n个人,围成一个圆圈,随机指定一个数m。然后从0开始报数,报到m-1的人出列,然后从下一个人开始又从0开始报数,直到剩下最后一个人。求最后剩下的人的编号。(编号从0到n-1)使用链表实现使用一个链表,每次从Index开始数,数到index+m-1,得到要出列的位置是(index+m-1)%list.size(),表示如果数到末尾,再从头开始数public class Sol...

2019-05-15 22:38:33 209

原创 剑指Offer:两个链表的第一个公共结点(java版)

题目描述输入两个链表,找出它们的第一个公共结点。(这个题是无环的情况下)使用HashMap使用HashMap存储链表1的每个结点,然后遍历链表2的结点,看map中是否包含这个结点,第一个找到的就是第一个公共结点:(用HashMap而不用HashSet的原因是HashMap内部是红黑树,时间复杂度更低)public class Solution { public ListNode ...

2019-05-15 22:35:32 146

原创 剑指Offer:复杂链表的复制(Java版)

题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head使用哈希表使用一个哈希表,来存储原节点和拷贝节点public class Solution { public RandomListNode Clone(RandomListNode pHead){ HashMap&lt...

2019-05-15 22:32:06 104

原创 剑指Offer:合并两个排序的链表(java版)

题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。递归public ListNode Merge(ListNode list1,ListNode list2) { if(list1==null) return list2; if(list2==null) ret...

2019-05-15 22:27:16 161

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除