题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。题目分析:可以采用递归求解,也可以采用层次遍历层次遍历的话我们需要借助队列帮助我们遍历,先将根节点入队,如果队列不空则一直循环。循环内先拿到对头节点再进行出队,如果左右树不空就入队,根据队列元素大小来确定执行次数,吗,每完成一次层次遍历就将depth+1;就如上图所示,先
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)示例输入[1,2,3,4,5],[4,3,5,1,2]返回值false题目分析可以借助一个
题目描述根据逆波兰表示法,求表达式的值。有效的运算符包括+,-,*,/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为0的情况逆波兰表达式:逆波兰表达式是一种后缀表达式,所谓后缀就是指算符写在后面。平常使用的算式则是一种中缀表达式,如(1+2)*(3+4)。该算式的逆波兰表达式写法为((1
请你来实现一个myAtoi(strings)函数,使其能将字符串转换成一个32位有符号整数(类似C/C++中的atoi函数)。函数myAtoi(strings)的算法如下:读入字符串并丢弃无用的前导空格检查第一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。确定最终结果是负数还是正数。如果两者都不存在,则假定结果为正。读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串
题目描述根据输入的日期,计算这是一年的第几天。测试用例有多组,注意循环输入输入描述:输入多行,每行空格分割,分别是年,月,日输出描述:成功:返回outDay输出计算后的第几天;失败:返回-1示例输入20121231输出366题目分析通过年月日计算天数,主要考虑到平年和闰年,以及二月天数对结果的影响。此处直接通过大小为12的数组,将平年365天按月进行合并,例如数组中第一个元素存储1月有多少天,第二
题目描述任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。本题含有多组样例输入。输入描述:输入一个偶数输出描述:输出两个素数示例输入20输出713题目分析首先应该判断出一个数是否为素数。这里判断素数的范围采用从2到开平方根n,如果这个区间有个数能使n能被整除,说明n不是素数;如果没有,n就是素数。从这个偶数的1/2去向
题目描述求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1本题含有多组样例输入。输入描述:输入一个byte数字输出描述:输出转成二进制之后连续1的个数示例输入35输出21说明3的二进制表示是11,最多有2个连续的1。5的二进制表示是101,最多只有1个连续的1。题目分析可以通过按位与(&)运算判断当前二进制位是否为1,可以通过右移运算(&g
题目描述给定一个二维数组board,代表棋盘,其中元素为1的代表是当前玩家的棋子,0表示没有棋子,-1代表是对方玩家的棋子。当一方棋子在横竖斜方向上有连成排的及获胜(及井字棋规则),返回当前玩家是否胜出。测试样例:[[1,0,1],[1,-1,-1],[1,-1,0]]返回:true题目分析井字棋游戏规则,就是判断行、列以及对角线上的棋子是否全部相同根据给定的二维数组,由于井字棋行和列相等,只需计
题目描述给定两个intA和B。编写一个函数返回A+B的值不得使用+或其他算数运算符(-*/)。测试样例:输入:1,2返回:3题目分析二进制位异或运算相当于不进位的加法二进制位的按位与运算相当于每一位向前一位的进位结合以上两种就可以实现加法运算参考代码:classUnusualAdd{public:intaddAB(intA,intB){//writecodehereintsum,carry;whi
题目描述正整数A和正整数B的最小公倍数是指能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。输入描述:输入两个正整数A和B。输出描述:输出A和B的最小公倍数。示例输入57输出35题目分析:这是一个数学问题,最小公倍数可由最大公约数求出。公式为最小公倍数等于两数之积除以最大公约数,最大公约数可由辗转相除法计算。参考代码:#include<iostream>using
题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。示例输入[1,2,3,2,2,2,5,4,2]返回值2题目分析:首先可以采用暴力破解法,出现次数多的元素在排序后肯定会在数组的中间位置,只需找出这个元素再去统计它出现的次数,判断其是
题目描述读入一个字符串str,输出字符串str中的连续最长的数字串输入描述:每个测试输入包含1个测试用例,一个字符串str,长度不超过255。输出描述:在一行内输出str中里连续最长的数字串。示例输入abcd12345ed125ss123456789输出123456789题目分析:本题要求我们从一个字符串中找到最长的数字串,我们可以定义两个string类对象,一个用于记录当前所得到的数字串,一个用
题目描述输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”Theyarestudents.”和”aeiou”,则删除之后的第一个字符串变成”Thyrstdnts.”输入描述:每个测试输入包含2个字符串输出描述:输出删除后的字符串示例:输入Theyarestudents.aeiou输出Thyrstdnts.题目分析:输入字符串中肯定含有空格,所以用getline接收,这个小技巧
题目描述将一句话的单词进行倒置,标点不倒置。比如Ilikebeijing.经过函数后变为:beijing.likeI输入描述:每个测试输入包含1个测试用例:Ilikebeijing.输入用例长度不超过100输出描述:依次输出倒置之后的字符串,以空格分割示例:输入Ilikebeijing.输出beijing.likeI题目分析:根据题目描述,观察可得是逆置以空格为分隔的每个单词,而整个单词的顺序没有
题目描述给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数输入描述:输入为一行,M(32位整数)、N(2≤N≤16),以空格隔开。输出描述:为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)示例1输入:72输出:111题目分析:本题是要进行进制转换,根据输入进制数将M(十进制数)转换为N进制。这里要注意负数的特殊
题目描述“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串是一个回文串。你接受花花的请求,帮助她寻找有多少种插入办法可以使新串是一个回文串。如果字符串B插入的位置不同就考虑为不一样的办法。例如:A=“aba”,B
题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。数值为0或者字符串不是一个合法的数值则返回0输入描述:输入一个字符串,包括数字字母符号,可以为空返回值描述:如果是合法的数值表达则返回该数字,否则返回0示例1输入:“+2147483647"返回值:2147483647示例2输入:"1a33"返回值:0分析:由于看到测试用例可能含有‘+’和‘-’,
题目描述给定一个字符串A和其长度n,请返回一个bool值代表它是否为一个合法的括号串(只能由括号组成)。测试样例输入:"(()())",6返回:true输入:"()a()()",7返回:false输入:"()(()()",7返回:false分析:当左括号和右括号括号匹配时,才返回true;其他都返回false考虑到左右括号匹配,可采用数据
题目描述在命令行输入如下命令:xcopy/sc:\d:\各个参数如下:参数1:命令字xcopy参数2:字符串/s参数3:字符串c:\参数4:字符串d:\请编写一个参数解析程序,实现将命令行各个参数解析出来。解析规则:1.参数分隔符为空格2.对于用“”包含起来的参数,如果中间有空格,不能解析为多个参数。比如在命令行输入xcopy/s“C:\programfiles”“d:\”时,参数仍然是4个,第3
题目:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入:1->2->3->4->5->NULL输出:5->4->3->2->1->NULL反转一个单链表,首先我们想到经典的三指针法。定义三个指针,遍历链表的指针pre,指向当前元素前一个元素的指针cur,cur所指向元素的下一个元素的指针ptr。然后更新指
请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如,把9表示成二进制是1001,有2位是1。因此,如果输入9,则该函数输出2。测试用例1:测试用例2:测试用例3:首先来分析题目,要统计二进制中1的个数,那么我们首先想到的是要将此数的每个比特位都要遍历一遍,然后判断为1count++,最后返回count。就写出如下代码inthammingWeight(uint32_tn){intcou
给定一个链表,判断链表中是否有环。题目要求如下:如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从0开始)。如果pos是-1,则在该链表中没有环。注意:pos不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回true。否则,返回false。如图所示:例1.输入:head
看这么一个问题:1.实现一个函数,可以左旋字符串中的k个字符。ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB拿到问题后,我们首先应该理解题意。什么是左旋?根据例题可以看出是把k个字符经过左旋放到后面,下面给出两种方法来求解:方法一:暴力求解#include<stdio.h>#include<stdlib.h>#include<assert.h>
求菲波那切数列第N项
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号