2014年10月28日

斐波拉契数列 【微软面试100题 第十九题】

摘要: 题目要求: 写一个函数,输入n,求斐波拉契数列的第n项。斐波拉契数列的定义如下: 参考资料:剑指offer第9题、编程之美2.9题目分析: 方法1:递归法,效率很低,而且会计算很多重复; 方法2:迭代法,通过保存中间项避免重复计算,时间复杂度O(n); 方法3:公式法,时间复杂度O(1... 阅读全文

posted @ 2014-10-28 23:39 tractorman 阅读(572) 评论(4) 推荐(0) 编辑

圆圈中最后剩下的数字 【微软面试100题 第十八题】

摘要: 题目要求: 0,1,...,n-1这n个数排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删词第3个数字,则删除的前四个数字一次是2、0、4、1,因此最后剩下的数字是3. 参考资料:剑... 阅读全文

posted @ 2014-10-28 19:18 tractorman 阅读(1234) 评论(0) 推荐(1) 编辑

第一个只出现一次的字符 【微软面试100题 第十七题】

摘要: 题目要求: 在一个字符串中找到第一个只出现一次的字符,如输入abaccdeff,则输出b。 参考资料:剑指offer第35题题目分析: 采用hash表,建立一个256大小的hash空间。需要遍历两次字符串,第一次遍历用来更新hash表,第二次遍历找出第一个只出现一次的字符。代码实现:#incl... 阅读全文

posted @ 2014-10-28 18:52 tractorman 阅读(231) 评论(0) 推荐(0) 编辑

从上往下打印二叉树 【微软面试100题 第十六题】

摘要: 题目要求: 从上往下打印出二叉树的每个结点,同一层的结点按照从左往右的顺序打印。 例如输入下图的二叉树,则依次打印出10,5,12,4,7 10 / \ 5 12 / \ 4 7 参考资料:剑指offer第23题、编程之美3.10题目分析: 使用一个辅助队... 阅读全文

posted @ 2014-10-28 18:02 tractorman 阅读(182) 评论(0) 推荐(0) 编辑

二叉树的镜像 【微软面试100题 第十五题】

摘要: 题目要求: 输入一颗二元查找树(二元搜索树),将该树转换为它的镜像。 例如: 8 8 / \ ---> / \ 6 11 11 6 参考资料:剑指offer第20题题目分析: 思路很简单:从根结点开始,交换左右结点的值,同时递归的处理左... 阅读全文

posted @ 2014-10-28 16:38 tractorman 阅读(192) 评论(0) 推荐(0) 编辑

和为s的两个数字 【微软面试100题 第十四题】

摘要: 题目要求: 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,输出任意一对即可。 例如输入数组{1,2,4,7,11,15}和数字15.由于4+11=15,因此输出4和11. 参考资料:剑指offer第41题题目分析: 方法1 穷举法:两... 阅读全文

posted @ 2014-10-28 16:08 tractorman 阅读(231) 评论(2) 推荐(0) 编辑

链表中倒数第k个结点 【微软面试100题 第十三题】

摘要: 题目要求: 输入一个链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。 参考资料:剑指offer第15题题目分析: 1.两个指针,第一个先走k步,然后两个指针同时走,直到第一个走到尾指针,此时第二个指针即为所求; 2.令函数原型为:ListNode *findKthToT... 阅读全文

posted @ 2014-10-28 15:29 tractorman 阅读(172) 评论(0) 推荐(0) 编辑

求1+2+...+n 【微软面试100题 第十二题】

摘要: 题目要求: 要求不能使用乘除法,for/while/if/else/switch/case等关键字以及条件判断语句(A?B:C)。 参考资料:剑指offer第46题题目分析: 方法1:利用类的静态成员变量,定义一次之后该类的所有对象都共享该静态成员变量。再利用构造函数实现n次递加即可; 方法... 阅读全文

posted @ 2014-10-28 10:42 tractorman 阅读(219) 评论(0) 推荐(0) 编辑

2014年10月27日

求二叉树中结点的最大距离 【微软面试100题 第十一题】

摘要: 题目要求: 如果我们把二叉树看成一个图,父子结点之间的连线看成是双向的,我们姑且定义“距离”为两节点之间边的个数。写一个程序,求一颗二叉树中距离最远的两个结点之间的距离。 参考资料:编程之美3.8题目分析: 最远距离要么经过根结点,要么不经过根结点在左子树中,要么不经过根结点在右子树中。根据这... 阅读全文

posted @ 2014-10-27 22:42 tractorman 阅读(268) 评论(1) 推荐(0) 编辑

翻转句子中单词的顺序 【微软面试100题 第十题】

摘要: 题目要求: 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。 例如:输入"I am a student.",则输出"student. a am I". 参考资料:剑指offer第42题。题目分析: 1.实现一个翻... 阅读全文

posted @ 2014-10-27 21:23 tractorman 阅读(221) 评论(0) 推荐(0) 编辑

二叉搜索树的后序遍历序列 【微软面试100题 第九题】

摘要: 题目要求: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。 例如输入数组{5,7,6,9,11,10,8},则返回true,因为这个证书序列时某一二叉搜索树的后序遍历结果。如果输入的数组是{7,4,... 阅读全文

posted @ 2014-10-27 19:37 tractorman 阅读(246) 评论(0) 推荐(0) 编辑

第八题各小题汇总 【微软面试100题 第八题】

摘要: 题目1: 有两个房间,一房间里有三盏灯,另一房间里有控制着这三盏灯的三个开关,这两个房间是分割开的,从一间里不能看到另一件的情况。现在要求受训者分别进这两间房一次,然后判断出这三盏灯分别是由哪个开关控制的。 分析:通过温度来解决。题目2: 你让一些人为你工作了七天,你要用一根金条作为报酬。金条... 阅读全文

posted @ 2014-10-27 16:44 tractorman 阅读(274) 评论(0) 推荐(0) 编辑

判断两个链表是否相交 【微软面试100题 第七题】

摘要: 题目要求: 给出两个单向链表的头指针,比如h1和h2,判断两个链表是否相交。题目分析: 1.边界检查:是否为NULL 2.是否有环: i).h1和h2都没有环,则如果h1和h2的最后一个结点时同一个结点,则相交; ii).一个有环,一个无环,则肯定不相交; iii).都有环,... 阅读全文

posted @ 2014-10-27 16:15 tractorman 阅读(275) 评论(0) 推荐(0) 编辑

根据上排数填下排数 【微软面试100题 第六题】

摘要: 题目要求: 根据上排给出的十个数,在其下排填出对应的十个数。 要求下排每个数都是先前上排那十个数在下排出现的次数。 例如:上排:0,1,2,3,4,5,6,7,8,9 下排:6,2,1,0,0,0,1,0,0,0 0在下排出现了6次,1在下排出现了2次,2在下排出现了1次,3在下排出... 阅读全文

posted @ 2014-10-27 11:32 tractorman 阅读(323) 评论(0) 推荐(0) 编辑

查找最小的k个元素 【微软面试100题 第五题】

摘要: 题目要求: 输入n个整数,输出其中最小的k个。 例如:输入1,2,3,4,5,6,7,8这8个数字,则最小的4个数字为1,2,3,4。参考资料:剑指offer第30题。题目分析: 解法一: 用快排的思想,但是最小的k个数不用排序,时间复杂度O(n). 优点:时间复杂度好,缺点:会修... 阅读全文

posted @ 2014-10-27 10:11 tractorman 阅读(235) 评论(0) 推荐(0) 编辑

2014年10月26日

在二元树中找出何为某一值的所有路径 【微软面试100题 第四题】

摘要: 题目要求: 输入一个整数和一颗二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。 打印出和与输入整数相等的所有路径。 例如输入22,和二叉树如下 10 / \ 5 12 / \ 4 7 则打印出两条路径:10-->12... 阅读全文

posted @ 2014-10-26 22:23 tractorman 阅读(244) 评论(0) 推荐(0) 编辑

求子数组的最大和 【微软面试100题 第三题】

摘要: 题目要求: 输入一个整型数组,数组里有整数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有个一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如:输入的数组为1,-2,3,10,-4,7,2,-5,和最大的子数组为3,10,-4,7,2,因此输出为该子数组的和... 阅读全文

posted @ 2014-10-26 21:29 tractorman 阅读(235) 评论(0) 推荐(0) 编辑

包含min函数的栈 【微软面试100题 第二题】

摘要: 题目要求:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push及pop的时间复杂度都是O(1).参考题目:剑指offer第21题.题目分析: 1.采用面向对象思想,定义类StackWithMin,包含min、push和pop等方法; 2.Stac... 阅读全文

posted @ 2014-10-26 20:28 tractorman 阅读(251) 评论(0) 推荐(0) 编辑

二叉搜索树与双向链表 【微软面试100题 第一题】

摘要: 题目要求:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。参考题目:剑指offer第27题解决思路: 1. 根据观察可知,双向链表顺序即为二叉树的中序遍历结果----->采用中序遍历+递归; 2. 中序遍历顺序为:左+中+右,传入... 阅读全文

posted @ 2014-10-26 16:51 tractorman 阅读(600) 评论(1) 推荐(0) 编辑

2014年8月29日

败者树

摘要: //参考链接:http://blog.chinaunix.net/uid-25324849-id-2182916.html#include using namespace std;const int N = 10000000;const int FILE_NUM = 5;const int MAX_... 阅读全文

posted @ 2014-08-29 10:41 tractorman 阅读(218) 评论(0) 推荐(0) 编辑

导航

统计

点击右上角即可分享
微信分享提示