2014年10月28日

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

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

posted @ 2014-10-28 23:39 tractorman 阅读(584) 评论(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 阅读(1247) 评论(0) 推荐(1)

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

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

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

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

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

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

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

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

posted @ 2014-10-28 16:38 tractorman 阅读(199) 评论(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 阅读(243) 评论(2) 推荐(0)

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

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

posted @ 2014-10-28 15:29 tractorman 阅读(179) 评论(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 阅读(225) 评论(0) 推荐(0)

导航