My Github
上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 28 下一页
摘要: dotNet简而言之,就是孝顺的小王想开发一个万能程序,可以一键式打开常见的计算机资料,例如:文档、图片和影音文件等,只需要安装一个程序就可以免去其他应用文件的管理(你让其他耗费了巨资打造的软件情何以堪...),于是就有了这个万能加载器(FileLoader)。初步分析之后,小王总结了这个万能加载器的功能点如下:能够打开常见文档类资料,能够打开常见图片类资料,能够打开常见音频类资料等。 阅读全文
posted @ 2015-09-05 03:12 EdisonZhou 阅读(2217) 评论(7) 推荐(11) 编辑
摘要: 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。例如在下面的一颗二叉搜索树中,输入数组{5,7,6,9,11,10,8},则返回true,因为这个整数序列是下图二叉搜索树的后序遍历结果。如果输入的数组是{7,4,6,5},由于没有哪棵二叉搜索树的后序遍历的结果是这个序列,因此返回false。 阅读全文
posted @ 2015-09-04 00:00 EdisonZhou 阅读(2139) 评论(0) 推荐(0) 编辑
摘要: 题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。例如输入下图中的二叉树,则依次打印出8、6、10、5、7、9、11。这道题实质是考查树的层次遍历(广度优先遍历)算法。不管是广度优先遍历一个有向图还是一棵树,都要用到队列。 阅读全文
posted @ 2015-09-03 10:23 EdisonZhou 阅读(2367) 评论(0) 推荐(0) 编辑
摘要: 题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1、2、3、4、5是某栈的压栈序列,序列4、5、3、2、1是该压栈序列对应的一个弹出序列,但4、3、5、1、2就不可能是该压栈序列的弹出序列。 阅读全文
posted @ 2015-09-03 00:04 EdisonZhou 阅读(5266) 评论(0) 推荐(2) 编辑
摘要: 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push及pop的时间复杂度都是O(1)。这里我们要实现的就是min、push以及pop三个方法。 阅读全文
posted @ 2015-09-02 00:51 EdisonZhou 阅读(3179) 评论(0) 推荐(0) 编辑
摘要: 题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如下图所示,左图是原二叉树,而右图则是该二叉树的镜像。我们可以先序遍历原二叉树的每个节点,如果遍历到的结点有子结点,就交换它的两个子结点。当交换完所有非叶子结点的左右子结点之后,就得到了树的镜像。 阅读全文
posted @ 2015-08-31 23:36 EdisonZhou 阅读(4463) 评论(0) 推荐(0) 编辑
摘要: 题目:输入两棵二叉树A和B,判断B是不是A的子结构。例如下图中的两棵二叉树,由于A中有一部分子树的结构和B是一样的,因此B是A的子结构。要查找树A中是否存在和树B结构一样的子树,我们可以分成两步:Step1.在树A中找到和B的根结点的值一样的结点R;Step2.判断树A中以R为根结点的子树是不是包含和树B一样的结构。很明显,这是一个递归的过程。 阅读全文
posted @ 2015-08-30 23:05 EdisonZhou 阅读(4435) 评论(0) 推荐(1) 编辑
摘要: 这也是一道出镜率极高的面试题,我相信很多童鞋都会很眼熟,就像于千万人之中遇见不期而遇的人,没有别的话可说,唯有轻轻地问一声:“哦,原来你也在这里? ”题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。例如输入下图中的链表1和链表2,则合并之后的升序链表如链表3所示。 阅读全文
posted @ 2015-08-30 20:09 EdisonZhou 阅读(3416) 评论(0) 推荐(0) 编辑
摘要: 题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。由于题目并没有要求必须原地反转,因此可以借助外部空间实现。这里可以将单链表储存为数组,然后按照数组的索引逆序进行反转。但是,此方式比较浪费空间,而且需要两次遍历,效率不占优势。 阅读全文
posted @ 2015-08-29 20:32 EdisonZhou 阅读(24737) 评论(1) 推荐(7) 编辑
摘要: 题目:输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是值为4的结点。 阅读全文
posted @ 2015-08-29 15:04 EdisonZhou 阅读(15056) 评论(2) 推荐(4) 编辑
摘要: 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。例如有以下一个整数数组:12345,经过调整后应该为:15342、13542、13524等等。 阅读全文
posted @ 2015-08-29 13:03 EdisonZhou 阅读(5498) 评论(1) 推荐(1) 编辑
摘要: 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。在单向链表中删除一个结点,最常规的做法无疑是从链表的头结点开始,顺序遍历查找要删除的结点,并在链表中删除该结点。这种思路由于需要顺序查找,时间复杂度自然就是O(n)。是不是一定需要得到被删除的结点的前一个结点呢?答案是否定的。 阅读全文
posted @ 2015-08-28 00:49 EdisonZhou 阅读(2415) 评论(2) 推荐(1) 编辑
摘要: 题目:输入数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。最容易想到的办法是先求出最大的n位数,然后用一个循环从1开始逐个打印。初看之下好像没有问题,但是其并没有考虑大数问题,有可能即使用整型(int)或长整型(long)都会溢出。 阅读全文
posted @ 2015-08-27 00:46 EdisonZhou 阅读(3931) 评论(0) 推荐(0) 编辑
摘要: 题目:实现函数double Power(doublebase, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。在.NET Framework提供的BCL中,Math类实现了一个Pow方法,例如要求2的三次方,可以通过以下代码实现,double result = Math.Pow(2, 3);本题就是要实现一个类似于该Pow方法的功能。 阅读全文
posted @ 2015-08-24 23:58 EdisonZhou 阅读(2757) 评论(0) 推荐(1) 编辑
摘要: 题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。一个基本的思路:先判断整数二进制表示中最右边一位是不是1。接着把输入的整数右移一位,此时原来处于从右边数起的第二位被移到最右边了,再判断是不是1。这样每次移动一位,直到整个整数变成0为止。 阅读全文
posted @ 2015-08-24 00:49 EdisonZhou 阅读(6561) 评论(1) 推荐(4) 编辑
摘要: 题目:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。很多C/C++/C#/Java语言教科书在讲述递归函数的时候,大多都会用Fibonacci作为例子,因此我们会对这种解法烂熟于心。但是,上述递归的解法有很严重的效率问题,通过求解第10项的调用过程图来分析,在这棵树中有很多结点是重复的,而且重复的结点数会随着n的增大而急剧增加,这意味计算量会随着n的增大而急剧增大。 阅读全文
posted @ 2015-08-23 10:50 EdisonZhou 阅读(9473) 评论(0) 推荐(3) 编辑
摘要: 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。我们注意到旋转之后的数组实际上可以划分为两个排序的子数组,而且前面的子数组的元素都大于或者等于后面子数组的元素。我们还注意到最小的元素刚好是这两个子数组的分界线。在排序的数组中我们可以用二分查找法实现O(logn)的查找。 阅读全文
posted @ 2015-08-21 00:18 EdisonZhou 阅读(12388) 评论(4) 推荐(7) 编辑
摘要: 题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。原文是使用C++结合模板实现的定义,这里我们采用C#结合泛型来实现这个队列的定义,我们要实现的就是两个方法:AppendTail与DeleteHead 阅读全文
posted @ 2015-08-20 00:38 EdisonZhou 阅读(2760) 评论(0) 推荐(0) 编辑
摘要: 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示的二叉树并输出它的头结点。 阅读全文
posted @ 2015-08-19 23:12 EdisonZhou 阅读(11261) 评论(2) 推荐(2) 编辑
摘要: 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。到解决这个问题肯定要遍历链表。遍历的顺序是从头到尾的顺序,可输出的顺序却是从尾到头。也就是说第一个遍历到的结点最后一个输出,而最后一个遍历到的结点第一个输出。这就是典型的“后进先出”,我们可以用栈实现这种顺序。 阅读全文
posted @ 2015-08-18 23:41 EdisonZhou 阅读(5615) 评论(1) 推荐(3) 编辑
上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 28 下一页