首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
课程
专栏·文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
CongYang_96
获赞
30
粉丝
1
关注
5
看过 TA
30
男
上海大学
2022
Java
IP属地:上海
暂未填写个人简介
私信
关注
拉黑
举报
举报
确定要拉黑CongYang_96吗?
发布(61)
刷题
CongYang_96
2020-11-16 09:57
Java
二叉搜索树的后序遍历序列
1. 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。 输入: [4,8,6,12,16,14,10] 返回值: true2.思路 此题主要为搜索二叉树的后序遍历,首先搜索二叉树的左子树一定小于根节点,右子树一定大于根节点。 其次,后序遍历主要为先遍历左叶子节点=>右叶子节点=>根节点!!! 如此一来,正常的后序遍历顺序为:最后一个数为根节点(array[length-1]=root),数组的前半部分为左子树,后半部分为右子树(扣除root),所以关键在于找出前后两部分的分界线...
0
点赞
评论
收藏
转发
CongYang_96
2020-11-15 10:30
Java
从上往下打印二叉树
1.题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。{5,4,#,3,#,2,#,1}返回值:[5,4,3,2,1]2.思路:其实就是树的层序遍历,BFS也可称为广度优先遍历利用队列的先入先出特性(FIFO)可以很好的实现从左往右的打印顺序时间复杂度O(n);此题是《把二叉树打印成多行》的基础版 import java.util.LinkedList; import java.util.Queue; public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode ro...
0
点赞
评论
收藏
转发
CongYang_96
2020-11-11 20:10
Java
孩子们的游戏(约瑟夫环问题)
1.题目: 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去....直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名侦探柯南”典藏版(名额有限哦!!^_^)。请你试着想下,哪个小朋友会得到这份礼品呢?(注:小朋友的编号是从0到n-1)如果没有小朋友,请...
0
点赞
评论
收藏
转发
CongYang_96
2020-11-11 12:35
Java
把二叉树打印成多行
1.题目:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 输入 {8,6,10,5,7,9,11} 返回值 [[8],[6,10],[5,7,9,11]] 2.思路;其实就是层序遍历:此题最重要的是使用队列,并且记录队列的长度!!!时间复杂度:O(n)题目给的是ArrayList<ArrayList<integer>>:其实是让你返回一个ArrayList,其中每个元素都是一个装了整型数据的ArrayList。比如{[8],[9,10],[11,12,13]}这样的返回方式。比如树有3层,大括号表示的ArrayList就应该装了3个元素。中括号的Arr...
0
点赞
评论
收藏
转发
CongYang_96
2020-11-10 10:27
Java
二叉树的下一个节点
1.题目:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。2.思路:方法一:暴力解法 根据给出的结点求出整棵树的根节点 根据根节点递归求出树的中序遍历,存入vector 在vector中查找当前结点,则当前结点的下一结点即为所求。 虽然有点暴力,但是时间复杂度也是线性的,第一步:最坏为O(N), N为整棵树结点的个数。第二步:O(N), 第三步:最坏为O(N),所以整的时间复杂度:3*O(N) import java.util.ArrayList; public class Solution { Arr...
0
点赞
评论
收藏
转发
CongYang_96
2020-11-08 10:02
Java
二叉搜索树的第K个节点
1.题目:给定一棵二叉搜索树,请找出其中的第k小的结点。 输入 {5,3,7,2,4,6,8},3 返回值 {4} 说明 按结点数值大小顺序第三小结点的值为4 2.思路:本题最关键的在于是一颗搜索二叉树,那么中序遍历的输出结果就是一个递增的数组!!!!!! import java.util.ArrayList; public class Solution { ArrayList<TreeNode> arr=new ArrayList<>();//用一个自动扩容的数组存放遍历输出 TreeNode KthNode(TreeNode pRoot, int k...
0
点赞
评论
收藏
转发
CongYang_96
2020-11-06 22:15
Java
二叉树的镜像
1.题目:操作给定的二叉树,将其变换为源二叉树的镜像。 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 52.思路:方法一:递归,最为简单的方式;时间复杂度O(n) public class Solution { public void Mirror(T...
0
点赞
评论
收藏
转发
CongYang_96
2020-11-05 22:00
Java
树的子结构
1.题目:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)2.思路:首先主方法:1.首先需要判断A,B的根节点是否一样。2.如果不一样,判断A的左孩子和B的根节点是否一样,或者判断A的右孩子和B的根节点是否一样。依次找下去,直到找到相同进入次方法如果上述情况都不满足则说明不包含其次:次方法递归遍历当前节点的子树是否完全相同:1.如果找到了A中有值和B中的根节点相同,则比较左右子树是否相同。2.如果B为空了,则说明包含3.如果A为空了或者存在不等的情况,则说明不包含 public class Solution { public boolean ...
0
点赞
评论
收藏
转发
CongYang_96
2021-04-13 10:26
已编辑
Java
重建二叉树
1.题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。2.思路:根据中序遍历和前序遍历可以确定二叉树,具体过程为: 根据前序序列第一个结点确定根结点 根据根结点在中序序列中的位置分割出左右两个子序列 对左子树和右子树分别递归使用同样的方法继续分解 例如:前序序列{1,2,4,7,3,5,6,8} = pre中序序列{4,7,2,1,5,3,8,6} = in 根据当前前序序列的第一个结点确定根结点,为 1...
0
点赞
评论
收藏
转发
CongYang_96
2020-11-04 10:20
Java
平衡二叉树
1.题目: 输入一棵二叉树,判断该二叉树是否是平衡二叉树。(在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树 )2.思路:判断一个数是否为平衡二叉树。平衡二叉树是左子树的高度与右子树的高度差的绝对值小于等于1,同样左子树是平衡二叉树,右子树为平衡二叉树。方法一:自上而下的遍历 public class Solution { public boolean IsBalanced_Solution(TreeNode root) { //平衡二叉树:|leftHeight-rightHeight|<=1 if(root==null){//判空 ...
0
点赞
评论
收藏
转发
CongYang_96
2020-10-29 21:47
Java
二进制中1的个数
1.题目:输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。2.思路:方法一:暴力法1、先将数字转换成二进制字符串2、用String.split()函数存入一个数组中3、遍历数组跟1比较,同时计数4、输出计数值 public class Solution { public int NumberOf1(int n) { String s=Integer.toBinaryString(n); int count=0; String[] split=s.split(""); for(int ...
0
点赞
评论
收藏
转发
CongYang_96
2020-10-26 14:16
Java
二叉树的深度
1.题目:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。2.思路:方法一:递归写法构思:传入某节点,调用该方法,返回的应该是以传入节点为根节点的树的深度,而树的深度,肯定和左右子树深度有关,所以进入这个方法后,就包含了左右子树的深度(而要得到左右子树的深度,肯定又是以左右子节点为根节点,再次调用该方法深度获取的,因此此时进行递归),并且还有由一个左右深度比较的过程,然后取较大值,这个较大值就是该节点左右子树深度较深的值,以该值+1作为返回值,就是该节点的深度。 public class Solution { p...
0
点赞
评论
收藏
转发
CongYang_96
2020-10-14 21:04
Java
矩形覆盖
1.题目: 我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2n的大矩形,总共有多少种方法?比如n=3时,23的矩形块有3种覆盖方法:2.思路 涂掉最后一级矩形的时候,是用什么方式完成的? n = 1 的时候 只能横着覆盖,一种 n = 2 的时候 可以横着和竖着覆盖,两种 n = 3 的时候 第三级横着覆盖,用了一级,剩下 n = 2,有两种覆盖方法 第三季竖着覆盖,用了两级,剩下 n = 1,有一种覆盖方法 总共有 3 种 n = 4 的时候 第 4 级横着覆盖,用了一级,剩下 n = 3,有三...
0
点赞
评论
收藏
转发
CongYang_96
2020-10-14 09:06
已编辑
Java
数组中重复的数字
1.题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。2.思路:方法一:哈希+遍历利用HashMap存储每个数,在遍历存储的过程中,遇到重复的马上返回true时间复杂度:O(n)空间复杂度:O(n) import java.util.HashMap; public class Solution { // Parameters: // numbers: ...
0
点赞
评论
收藏
转发
CongYang_96
2020-10-13 18:06
Java
JAVA中的printf
除了System.out.print(ln),java中还有一种输出命令,而且比以上两种更为复杂、强大,那就是System.out.printf样例:输出结果:倘若不用System.out.printf ,而是用System.out.print(ln)格式就出现了明显错误,如下:好了,开始System.out.printf 详细学习吧 基本格式:格式控制符以一个%开始,一个字母结束,字母规定了方法按照何种方式打印这个值,例如d表示十进制整数(int),f表示浮点数(double). 例如:int x=12,y=10; System.out.printf("(%d,%d)",...
0
点赞
评论
收藏
转发
1
2
3
4
5
工具箱
TA的圈子
暂未加入圈子
TA的圈子
TA的笔记
暂无笔记
TA的笔记
登录
0
天
已登录
0
天
连续登录
0
人
今日访客
牛客网
牛客企业服务