
剑指offer
文章平均质量分 78
兰亭风雨
在路上
展开
-
【剑指offer】最近公共祖先
这类的题目,方法蛮多的,思路也不难理解,基本都是各种遍历的变种,主要是写代码,尤其基于递归的代码。 首先如果是二叉排序树自然不用说了,判断的一句就是该节点的值是否位于输入的这两个节点之间,可以用前序遍历来做。 如果是普通的树或者二叉树,解题思路是一样的,可以考虑前序遍历,得到两个路径,用链表或数组保存起来,然后找出两条路径的最后一个公共节点即可。也可以后序遍历的方式,遍历到输入的节点时,将该节点及其后面遍历到的节点都保存到一个链表或数组中,然后找出两条路径的第一个公共机节点即可。原创 2014-06-03 08:36:26 · 7440 阅读 · 2 评论 -
【剑指offer】左旋转字符串
这道题之前在Cracking the Coding interview上做过类似的,一样的三次反转,即可得到,时间复杂度为O(n),空间复杂度为O(1)。这道题在九度OJ上测试,主要要考虑移动的位数大于字符串长度时的情况,取余即可。原创 2014-05-29 08:29:57 · 3940 阅读 · 1 评论 -
【剑指offer】判断二叉树平衡
题目:输入一个二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 剑指offer上给的第二种思路,用后序遍历真的是将递归发挥的淋漓尽致,先遍历节点的左右子树,左右子树都平衡才来判断该节点是否平衡,如果左右子树中有不平衡的,则直接返回false,避免了从上往下逐个节点地计算深度带来的重复遍历节点。 代码如下:原创 2014-05-28 08:22:06 · 3662 阅读 · 0 评论 -
【剑指offer】翻转单词顺序
题目描述:JOBDU最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?输入:每个测试案例为一行,表示一句英文句子。我们保证一个句子的单词数不会超过600,每个单词的长度也不会超过30。但是需要注原创 2014-05-29 08:30:05 · 3811 阅读 · 2 评论 -
【剑指offer】二叉树深度
题目描述:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。输入:第一行输入有n,n表示结点数,结点号从1到n。根结点为1。 n <= 10。接下来有n行,每行有两个个整型a和b,表示第i个节点的左右孩子孩子。a为左孩子,b为右孩子。当a为-1时,没有左孩子。当b为-1时,没有右孩子。输出:输出一个整型,表示树的深度。样例输入:32 3-1 -1-1 -1样例输出:2 之前在Cracking the Co原创 2014-05-28 08:22:12 · 3830 阅读 · 0 评论 -
【剑指offer】第一个只出现一次的字符
处理字符串中重复或者次数出现等问题,最常用的就是哈希表,用字符串中的字符作为key,字符出现次数作为value,假定只有ASCII码范围内的字符,则可以开辟一个256大小的int数组,将每个字符(key)映射到该数组的对应位置上,计算每次出现的次数即可,遍历一次字符串,计算每个字符出现的次数,保存在int数组的对应位置上,第二次遍历字符串,若第一次出现某个字符对对应到的哈希表的对应位置处的元素为1,则该字符便是第一个只出现一次的字符,如果我们是遍历哈希表(int数组),则找到的哈希表中的第一个元素为1的位置原创 2014-05-27 08:25:55 · 9153 阅读 · 0 评论 -
【剑指offer】删除在另一个字符串中出现的字符
题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。 这里主要要分析两个方面: 1、如何判断那些字符是需要删除的字符。同很多字符串问题一样,可以开辟一个哈希数组,全部初始化为false,将第二个字符串中字符对应的映射位置置为ture,表示这些位置对应的字符在第一个字符串中需要删除。 2、关于删除字符的操作,每次删除一个,而后把后面的元素均左移一原创 2014-05-27 08:26:21 · 5879 阅读 · 0 评论 -
【剑指offer】连续子数组的最大和
题目描述:HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天JOBDU测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?输入:输入有多组数据,每组测试数据包括两行。第一行为一个整数n(0<=n<=100000),当n=0时,输入原创 2014-05-27 08:25:42 · 3609 阅读 · 0 评论 -
【剑指offer】最小的k个数
1、最直观的思路依然是对数组进行快速排序,而后取出前k个元素。这样的时间复杂度为O(nlogn) 2、这里可以采用类似于上面那道题目的基于Partition的方法,只是这次要求的分界点不是中位数,而是第k小的数,即排序后应该位于数组的第k-1个位置上的元素,这样该分界点前面的k个元素(包括该分界点)便是最小的k个数(这k个数字不一定是排序的)。跟上面那道题目分析的一样,这种方法的平均时间复杂度为O(n),最坏情况下的时间复杂度为O(n*n),一样也可以用算法导论上提出的分割数组的方法,将最坏情况下的原创 2014-05-26 08:16:14 · 5595 阅读 · 3 评论 -
【剑指offer】出现次数超过一半的数字
题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。输入:每个测试案例包括2行:第一行输入一个整数n(1<=n<=100000),表示数组中元素的个数。第二行输入n个整数,表示数组中的每个元素,这n个整数的范围是[1,1000000000]。输出:对应每个测试案例,输出出现的次数超过数组长度的一半的数,如果没有输出-1。样例输入:91 2 3原创 2014-05-25 15:00:56 · 15829 阅读 · 2 评论 -
【剑指offer】二叉搜索树转双向链表
思路:这道题目关键在于不能创建新的节点,如不然,我们可以直接将二叉排序树中序遍历保存到一个数组中,而后再建立一个双性链表,将数据保存到双向链表里。 这里不能创建新节点,我们只能改变节点的指向左右子树的节点,让其变为指向二叉链表中的前后节点,很明显这里同样用的是中序遍历,因此这道题目依然是中序遍历的变种,中序递归构造实现即可,每次递归都保存一个指向已构造好的双向链表的尾节点的指针,将其与下一个节点连接起来。 另外,这道题OJ的输出格式与前面的不同,输出样例中又没有说明,我试了三次才AC,前两次原创 2014-05-23 08:26:32 · 6116 阅读 · 1 评论 -
【剑指offer】八皇后问题
剑指offer上解决八皇后问题,没有用传统的递归或非递归回溯法,而是用了很巧妙的全排列法。 先说下八皇后问题:在8 X 8的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后不得处于同一行,同一列或者同意对角线上,求出所有符合条件的摆法。 全排列解决八皇后问题的思路如下: 由于8个皇后不能处在同一行,那么肯定每个皇后占据一行,这样可以定义一个数组A[8],数组中第i个数字,即A[i]表示位于第i行的皇后的列号。先把数组A[8]分别用0-7初始化,接下来对该数组做全排列,由于我们原创 2014-05-23 08:26:25 · 5739 阅读 · 5 评论 -
【剑指offer】顺时针打印矩阵
剑指offer上的第20题,九度OJ上测试通过。题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:1 2 3 45 6 7 89 10 11 1213 14 15 16则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.输入:输入可能包含多个测试样例,对于每个测试案例,输入的第一行包括两个整数m和n(1<=m,n<=1000):表示矩阵的维数为m行n列。接下来的m行,每行包括n个整数,表示矩阵的元素原创 2014-05-17 12:14:54 · 5663 阅读 · 3 评论 -
【剑指offer】数字在排序数组中出现的次数
我做这道题,是先用二分查找找到该数字,而后再遍历其前后相同的数字,统计次数。这种做法的平均时间复杂度为O(logn),最坏情况下为O(n),剑指offer上给的思路是两次用二分查找分别找到该数字第一次和最后一次出现的位置,这样的时间复杂度平均和最坏都是O(logn),稍好些》 下面贴上我按照自己思路写的代码:原创 2014-05-29 08:29:47 · 3191 阅读 · 0 评论 -
【剑指offer】丑数
思路:最简单的方法就是先通过将一个数不断除以2,3,5来判定该数是不是丑数,而后在从1开始,依次往后判断每个数是不是丑数,并记下丑数的个数,这样当计算的个数为给定值时,便是需要求的第n个丑数,这种方法的时间复杂度为O(k),这里的k为第n个丑数的大小,比如第1500个丑数的大小为859963392,那么就需要判断859963392次,时间效率非常低。 直观的优化措施就是看能不能将时间复杂度降低到O(n),即只在丑数上花时间,而不在非丑数上浪费时间。剑指offer上给的思路很好,用O(n)的辅助空间来原创 2014-05-30 08:50:29 · 6820 阅读 · 0 评论 -
【剑指offer】无聊的1+2+...+n
题目描述:求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。输入:输入可能包含多个测试样例。对于每个测试案例,输入为一个整数n(1<= n<=100000)。输出:对应每个测试案例,输出1+2+3+…+n的值。样例输入:原创 2014-06-02 08:50:44 · 5882 阅读 · 11 评论 -
【剑指offer】字符串转整数
关于这道题目,题目本身还是不错的,真正核心的代码也就那么两行,大部分代码基本都在做非法输入的检查。 最近做这几道题目,对九度后台的测试用例有点无语了,这道题目的测试用例应该有问题,我写的代码自己测试了很多种不同的非法输入以及合法输入,都没问题,但是在九度OJ上只有第四条测试用例通过,其他四条全部WA,害的我搞了一个晚上,后来下了个别人AC的代码,拿来测试了下,结果各种非法的输入都没处理,很多非法的输入,得到的都是些莫名奇妙的答案。 先贴上代码,大家帮我看下有木有没考虑到的地方:原创 2014-06-02 08:52:32 · 6080 阅读 · 2 评论 -
【剑指offer】约瑟夫环问题
题目描述:每年六一儿童节,JOBDU都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为JOBDU的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为1的小朋友开始报数。每次喊到m的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续1...m报数....这样下去....直到剩下最后一个小朋友,可以不用表演,并且拿到JOBDU名贵的“名侦探柯南”典藏版(名额有限哦!!^_^原创 2014-06-02 08:50:34 · 9377 阅读 · 3 评论 -
【剑指offer】扑克牌的顺子
九度上把这道题目改成了一副扑克牌有4张大小王,这里姑且不管它最多几个0,就题目来说,不严谨,很含糊,比如这里没有对顺子给出比较严谨的定义,5个以下的连续数字算是顺子吗?现实中要至少5个才算顺子的,而且如果假设3个牌也算顺子,那如果输入的是3个0呢,这有点太牵强了!看论坛里面好多人吐槽。总之,不管那么多,这道题目无论它怎么坑爹,用剑指offer上的思路写的代码AC是没问题的,因为这里不管你0有多少个(只要不大于数组的长度就可)都OK。 我之前想避开排序,或者开辟哈希数组,就遍历一遍求出最大值,最小值,原创 2014-06-01 00:00:52 · 5011 阅读 · 0 评论 -
【剑指offer】和为定值的连续正数序列
题目描述:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输入:输入有多组数据。每组数据仅包括1个整数S(S<=1,000,000)。如果S为负数时,则结束输入。输出:对应每组数据,若不存在和为S的连续正原创 2014-06-01 00:00:36 · 4255 阅读 · 0 评论 -
【剑指offer】数组中只出现一次的数字(2)
题目:一个int数组中有三个数字a、b、c只出现一次,其他数字都出现了两次。请找出三个只出现一次的数字。 上篇博文中我们求的是两个只出现一次的数字,且时间复杂度为O(n),这次是三个,可以同样考虑将数组先分成两个子数组,求出其中一个只出现一次的数字,而后再将另一个子数组分成两个子数组,再分别求这两个只出现一次的数字。何海涛的博客给的就是这种思路,并给出了详细的证明过程,详见:http://zhedahht.blog.163.com/blog/static/2541117420128308424641原创 2014-05-31 13:13:53 · 5163 阅读 · 2 评论 -
【剑指offer】和为定值的两个数
题目: 输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。 思路: 最直接的做法是暴力法,两个for循环,时间复杂度为O(n*n),但是这样没有充分利用升序数组这一前提。我们假设数组为A,长度为len,给定的和为sum,最好的方法是先用数组的第一个数A[lo原创 2014-05-04 08:37:40 · 7220 阅读 · 3 评论 -
【剑指offer】数组中只出现一次的数字(1)
思路:上篇博文中已经了解到异或去重的原理,而且知道如果只有一个只出现一次的数字的求法,但这里是有两个只出现一次的数字,我们便要想办法把他分为两个子数组,每个子数组中包含一个只出现一次的数字,其他的数字都出现了两次。剑指offer上的思路很巧妙,依然从头到尾异或所有的数字,这样得到的结果实际上就是两个只出现了一次的数字异或的结果,我们在异或后的结果中找出其二进制中最右边为1的位,该位既然为1,说明异或的两个数字对应的该位肯定不同,必定一个为1,一个为0,因此我们可以考虑根据此位是否为1来划分这两个子数组,这样原创 2014-05-31 08:59:12 · 8760 阅读 · 1 评论 -
【剑指offer】数组中的逆序对
思路:最简单的方法是顺序数组,将每个数字与后面的比较,统计逆序对的个数,这种方法的时间复杂度为O(n*n),这种方法写出的代码在九度OJ上测试,会超时。剑指offer给出了归并排序的思路,这个有点难想到啊,也可能是我太弱了,根本没往这方面想!理解了思路,就不难了,将数组划分成两个子数组,再将子数组分别划分成两个子数组,统计每个子数组内的逆序对个数,并将其归并排序,再统计两个子数组之间的逆序对个数,并进行归并排序。这就是归并排序的变种,在归并排序代码的基础上稍作改进即可。 合理还要注意一点:全局变量c原创 2014-05-30 08:49:58 · 6256 阅读 · 0 评论 -
【剑指offer】斐波那契序列与跳台阶
剑指offer上的第就题,简单题,在九度OJ上测试通过。 主要注意以下几点: 1、用非递归实现,递归会超时 2、结果要用long long保存,不然会发生结果的溢出,从而得到负值 3、如果是在VC++6.0下编译的,long long是illegal的,要用_int64代替,同时输出的转化以字符也要用%l64d代替%lld原创 2014-05-09 09:20:03 · 3254 阅读 · 0 评论 -
【剑指offer】异或去重
或是一种基于二进制的位运算,用符号XOR或者 ^ 表示,其运算法则是对运算符两侧数的每一个二进制位,同值取0,异值取1。它与布尔运算的区别在于,当运算符两侧均为1时,布尔运算的结果为1,异或运算的结果为0。 异或的性质: 1、交换律:a^b = b^a; 2、结合律:(a^b)^c = a^(b^c); 3、对于任意的a:a^a=0,a^0=a,a^(-1)=~a。 了解了上面这些,来看看这个,很重要,后面的程序都要用到这个结论: 对于任意的a,有a^b^c^原创 2014-05-30 08:51:41 · 8630 阅读 · 4 评论 -
【剑指offer】整数中1出现的次数
思路:我们先写一个函数,求出从1到整数n之间1出现的次数,而后分别将要求输入的两个数(具体说,应该是最大的数,和最小的数减去1)作为参数传入该函数,得到的值相减,即可得到二者之间的的数中1出现的次数。 最简单的方法,分别求从1到n之间每个数中的1的个数,由于整数n的位数为O(logn),我们要判断一个数有多少个1,需要判断其每一位是否为1,这样一个数就需要判断O(logn)次,而总共有n个数需要求,那么该方法的时间复杂度为O(nlogn)。在九度OJ上用该方法写的代码测试,会超时。 剑指of原创 2014-05-30 08:50:39 · 5932 阅读 · 3 评论 -
【剑指offer】对面和相等的正方体
剑指offer上的全排列相关题目。 输入一个含有8个数字的数组,判断有么有可能把这8个数字分别放到正方体的8个顶点上,使得正方体上三组相对的面上的4个顶点的和相等。 思路:相当于求出8个数字的全排列,判断有没有一个排列符合题目给定的条件,即三组对面上顶点的和相等。 代码:原创 2014-05-22 00:21:14 · 4098 阅读 · 0 评论 -
【剑指offer】打印1到最大的n位数
剑指offer第12题,九度OJ测试通过。题目描述:给定一个数字N,打印从1到最大的N位数。输入:每个输入文件仅包含一组测试样例。对于每个测试案例,输入一个数字N(1<=N<=5)。输出:对应每个测试案例,依次打印从1到最大的N位数。原创 2014-05-12 23:59:11 · 5526 阅读 · 0 评论 -
【剑指offer】字符串的排列
昨晚折腾了一个晚上,连这一道题目都没AC,太受打击了!这里倒不是算法的问题,主要是既要考虑输出的字符串按字典序排列,又要去掉重复的字符串。本想直接在不保存所有字符串的前提下,直接按照要求输出字符串,但折腾了一晚上,还是决定放弃了,依然是使用最直接的方法,以空间换取结果,将所有的字符串保存到一个字符串数组中,由于全排列后的字符串数最大为9!=362880,故开辟一个362900大的字符串数组用来保存这些字符串,而后对这些字符串进行排序,先用了选择排序,通过strcpy字符串进行排序,结果争取,但第三组测试用例原创 2014-05-21 08:22:09 · 4401 阅读 · 0 评论 -
【剑指offer】旋转数组的最小值
现在对算法真的是由衷地热爱啊,总是忍不住想要A题(本科都没这意识,哎,把时间都浪费在了考试拿奖学金和所谓的学生工作上了),而且数学一直以来都是自己的强项,希望在这方面以后能应用好,虽然在ACM方面还只是个小学生,以后即使工作了,也要把ACM坚持下去,无关乎工作,只关乎兴趣。 依然是剑指offer上的题目,第8题,在九度OJ上测试通过。原创 2014-05-08 20:30:35 · 3175 阅读 · 0 评论 -
【剑指offer】二分查找二维数组
剑指offer上的第一道题目,在九度OJ上测试通过题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。输入:输入可能包含多个测试样例,对于每个测试案例,输入的第一行为两个整数m和n(1<=m,n<=1000):代表将要输入的矩阵的行数和列数。输入的第二行包括一个整数t(1<=t<=1000000):代表要查找的数字。接下来的m行,每行有n个数,代表题目所给出的m行n列的矩原创 2014-05-04 14:23:35 · 6551 阅读 · 0 评论 -
【剑指offer】两个队列实现一个栈
转载请注明出处: 题目:用两个队列模拟一个栈,即用两个队列的出队和入队操作,来实现栈的出栈和入栈操作。 思路:稍微画下草图,便不难想出该题的解决方法,思路如下: 假设有两个队列Q1和Q2,当二者都为空时,入栈操作可以用入队操作来模拟,可以随便选一个空队列,假设选Q1进行入栈操作,现在假设a,b,c依次入栈了(即依次进入队列Q1),这时如果想模拟出栈操作,则需要将c出栈,因为在栈顶原创 2014-05-06 09:04:50 · 9249 阅读 · 2 评论 -
【剑指offer】员工年龄排序
对公司所有员工的年龄进行排序,公司总共有几万名员工,要求时间复杂度为O(n)。 很明显的计数排序题目,员工的年龄肯定在一个范围之内,我们这里假设在0-99之内,算很大了,这样就可以开辟一个长度为100的数组,保存各个年龄的员工的个数。原创 2014-05-07 12:21:12 · 4956 阅读 · 3 评论 -
【剑指offer】树的子结构
题目描述:输入两颗二叉树A,B,判断B是不是A的子结构。输入:输入可能包含多个测试样例,输入以EOF结束。对于每个测试案例,输入的第一行一个整数n,m(1<=n<=1000,1<=m<=1000):n代表将要输入的二叉树A的节点个数(节点从1开始计数),m代表将要输入的二叉树B的节点个数(节点从1开始计数)。接下来一行有n个数,每个数代表A树中第i个元素的数值,接下来有n行,第一个数Ki代表第i个节点的子孩子个数,接下来有Ki个树,代表节点i子孩子节点标号。接下来m+1行,与树A描述相同。输出:原创 2014-05-16 08:39:48 · 2601 阅读 · 0 评论 -
【剑指offer】二叉树的镜像
这道题目与上道题目一样,采用数组来作为保存二叉树节点的数据结构,会使测试代码更容易编写。具体的实现算法在代码中比较容易看懂,不细说了,主要想说下,测试时遇到的一些问题(最后AC了): 1、先序遍历的输出要符合要求的格式,即对于每一个测试用例来说,输出的各节点元素间要有一个空格,且输出最后一个元素后要没有空格,但要输出一个换行符,这就要判断出程序什么时候遍历输出最后一个元素,再递归实现的先序遍历函数中,我没想到能使最后一个元素符合输出格式的方法,因此我这里定义了一个int数组,用来顺序保存先序遍历的节原创 2014-05-16 08:39:59 · 3215 阅读 · 4 评论 -
【剑指offer】替换字符串中的空格
剑指offer上的第二道题目,在九度OJ上测试通过,但还是有些问题,因为是用C语言实现的,因此,要提前开辟一个比较大的空间来存储输入的字符串。而如果在线测试系统的测试用例中字符串的长度大于该最大值的话,会报RE,但是九度OJ的测试用例没有大于我所设定的字符串的最大值。当然,这道题目用C++中的string类或java中的String类实现会更好,不需要担心输入字符串的长度。原创 2014-05-05 08:27:20 · 4225 阅读 · 2 评论 -
【剑指offer】从尾到头打印单链表
题目描述:输入一个链表,从尾到头打印链表每个节点的值。输入:每个输入文件仅包含一组测试样例。每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类推。当输入到-1时代表链表输入完毕。-1本身不属于链表。输出:对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行。原创 2014-05-05 10:08:13 · 4082 阅读 · 0 评论 -
【剑指offer】重构二叉树
时间限制:1 秒 内存限制:32 兆题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出它的后序遍历序列。输入:输入可能包含多个测试样例,对于每个测试案例,输入的第一行为一个整数n(1<=n<=1000):代表二叉树的节点原创 2014-05-05 16:03:25 · 3944 阅读 · 0 评论 -
【剑指offer】变态跳台阶
斐波那契序列的变种,简单题,在九度OJ上测试通过。时间限制:1 秒内存限制:32 兆题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。输入:输入可能包含多个测试样例,对于每个测试案例,输入包括一个整数n(1<=n<=50)。输出:对应每个测试案例,输出该青蛙跳上一个n级的台阶总共有多少种跳法。原创 2014-05-09 09:52:08 · 4926 阅读 · 0 评论