牛客
超分辨菜鸟
这个作者很懒,什么都没留下…
展开
-
牛客-中等-表达式求值
题目请写一个整数计算器,支持加减乘三种运算和括号。示例1输入:“1+2”复制返回值:3复制示例2输入:“(2*(3-4))5"复制返回值:-10复制示例3输入:"3+23*4-1”复制返回值:26表达式求值分析:我是按照先将字符串中缀表达式转换为后缀表达式之后,按照逆波兰求值的方式解题的:难点在于中缀转后缀,其中,中缀在转后缀的时候要注意的是1.小数的转化,2.大于10的数字的转化要考虑到运算字符的优先级问题,比如当前字符为+或者-,而运算栈的栈顶存原创 2021-08-13 18:06:08 · 180 阅读 · 0 评论 -
JAVA-LeetCode剑指offer24反转单链表
反转单链表1.题目2.分析3.代码示例1.题目定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL来源:力扣(LeetCode)链接:反转单链表2.分析此文题可以视为将已有链表的每一个逐个往前挪3.代码示例public static Node reverseList(Node head){原创 2021-01-02 11:12:10 · 86 阅读 · 1 评论 -
java-牛客-取手套问题
取手套题目描述在地下室里放着n种颜色的手套,手套分左右手,但是每种颜色的左右手手套个数不一定相同。A先生现在要出门,所以他要去地下室选手套。但是昏暗的灯光让他无法分辨手套的颜色,只能分辨出左右手。所以他会多拿一些手套,然后选出一双颜色相同的左右手手套。现在的问题是,他至少要拿多少只手套(左手加右手),才能保证一定能选出一双颜色相同的手套。给定颜色种数n(1≤n≤13),同时给定两个长度为n的数组left,right,分别代表每种颜色左右手手套的数量。数据保证左右的手套总数均不超过26,且一定存在至少一原创 2021-04-28 15:48:24 · 290 阅读 · 1 评论 -
JAVA-牛客-查找组成一个偶数最接近的两个素数
题目描述:任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。本题含有多组样例输入。要注意多组样例输入分析;此题目要求对一个偶数进行质数加和分解,首先想到的就是,这个偶数/2之后得到的是否是一个质数当前得到的两个因子如果是质数,那一定是差最小的质数,因为相等如果当前得到的不是质数,就需要对这两个数进行判断,假设得到两个因子为a和b,a在最开始和b相等,需要得到差最小的两个质数,就得对a+1,对b-1,这样一增一原创 2021-04-24 15:37:55 · 196 阅读 · 0 评论 -
JAVA-牛客-求节点a和b的最近公共祖先
题目描述有一棵无穷大的满二叉树,其结点按根结点一层一层地从左往右依次编号,根结点编号为1。现在有两个结点a,b。请设计一个算法,求出a和b点的最近公共祖先的编号。给定两个int a,b。为给定结点的编号。请返回a和b的最近公共祖先的编号。注意这里结点本身也可认为是其祖先测试输入:2,3返回:1分析:对于一棵完全二叉树->,其根节点为子节点/2,想要找到公共祖先,就得从大的节点开始寻找其根节点,若找到一个根为小节点或这为小节点的根就停止;举个例子:10和8的公共祖先为2;首先求10的原创 2021-04-23 11:19:37 · 212 阅读 · 0 评论 -
JAVA-找到n的阶乘结果中末尾0的个数
题目描述输入一个整数,求其阶乘,然后求出阶乘结果中末尾0的个数例如输入10;输出2;10的阶乘为362880分析求n!结果的末尾有多少个0;直接通过计算n!会出现溢出的情况,值过于庞大,因此需要找到计算阶乘过程中因子与0之间的关系,从1开始到n的阶乘的计算过程中,会发现遇见能被5整除的数时,尾部0就会+1;在10-14的阶乘计算中,3628800、479001600、6227020800、87178291200.。15的阶乘是1307674368000,我们发现,5有一个零,10有两个原创 2021-04-21 11:36:06 · 946 阅读 · 0 评论 -
JAVA-牛客-简单-平衡二叉树
平衡二叉树平衡二叉树题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。示例1输入:{1,2,3,4,5,6,7}返回值:true分析平衡二叉树要求每个子树都为平衡二叉树,按照题目要求,首先判断当前节点是否为平衡二叉树,要求其左右子树节点相差不超过1在子树深度原创 2021-03-28 21:19:08 · 104 阅读 · 1 评论 -
JAVA-牛客-简单-二叉树的深度
二叉树的深度二叉树的深度题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。示例1输入:{1,2,3,4,5,#,6,#,#,7}返回值:4题目分析:给定一个二叉树,求其深度,题目给出了一个根节点,需要求出二叉树的深度,就是求二叉树最深的节点,由二叉数的原理可知:每次当左右节点都为空时,就到了此节点的最高位置,通过递归解此题较为简单,与二叉树的遍历原理相同,首先,给一个值保存当前的深度depth=0,从原创 2021-03-28 19:24:03 · 101 阅读 · 0 评论 -
JAVA-牛客-重建二叉树
重建二叉树重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。分析通过前序遍历和中序遍历去重建二叉树前序遍历代表根在最前方,中序遍历根在其左子树和右子树的中间。我们通过创建根节点的方式去重建整个二叉树,要用根来创建二叉树,需要对前序进行遍历,整个问题可以化分为数个子问题进行解决。创建一个二叉树,首先创原创 2021-03-24 17:07:18 · 112 阅读 · 0 评论 -
JAVA牛客-用两个栈实现队列
用两个栈实现队列用两个栈实现队列分析:首先,要清楚栈和队列的基础逻辑,栈是后进先出,队列是先进先出。如下图所示:要用栈构建队列,两个栈SK1和SK2,栈每次弹出的都是新入的元素,而队列要求弹出最早进入的元素,因此,可以将SK1中的元素 **倒入 ** SK2,弹出SK2栈顶的元素即可,值得注意的是:对SK2非空的判断,当SK2为空时,就需要将SK1中的元素倒入,若不为空,就不做改变,如下图所示:代码:import java.util.Stack;public class Solu原创 2021-03-23 09:45:39 · 90 阅读 · 0 评论 -
JAVA-牛客-约瑟夫问题
1.题目题目描述现有n个人围坐一圈,顺时针给大家编号,第一个人编号为1,然后顺时针开始报数。第一轮依次报1,2,1,2…没报1的人出局。接着第二轮再从上一轮最后一个报数的人开始依次报1,2,3,1,2,3…没报1的人都出局。以此类推直到剩下以后一个人。现给定一个int n,要求返回最后一个人的编号。测试样例:5返回:52.分析此问题需要将数据构成环,因此在这里采用链表存储每次没有出局的人我们首先将1-5号依次放入链表,根据题目要求,需要进行1,2报数,且报数为1的不淘汰,那么通过判断条件将原创 2021-01-24 20:32:09 · 415 阅读 · 0 评论 -
JAVA-牛客-翻转指定字符串
1.题目题目描述给一个字符类型的数组chas和一个整数size,请把大小为size的左半区整体右移到右半区,右半区整体移动到左边。输入描述:输入两行,第一行一个整数,代表size,第二行一个字符串,(1≤size≤length ≤10^5)输出描述:输出一行字符串,代表翻转后的字符串。示例1输入复制3abcdefg输出复制defgabc‘来源:牛客网链接:添加链接描述2.分析此题目要求将字符串进行部分翻转指定长度进行翻转那么只需要进行多次字符排列即可每次都将首个字符原创 2021-01-19 23:48:43 · 198 阅读 · 0 评论