随笔分类 -  【微软面试100题】

上一页 1 2 3 4 下一页

在字符串中删除特定的字符 【微软面试100题 第六十三题】
摘要:题目要求: 输入两个字符串,从第一个字符串中删除第二个字符串中所有的字符。例如,输入"They are students."和"aeiou",则删除之后的第一个字符串变成了"Thy r stdnts.".题目分析: 1. 把第二个字符串的所有字符都存入一个set中; 2. 遍历第一个字符串的每... 阅读全文

posted @ 2014-11-17 13:05 tractorman 阅读(200) 评论(0) 推荐(0) 编辑

找出链表的第一个公共结点 【微软面试100题 第六十二题】
摘要:题目要求: 两个无环单向链表,找出它们的第一个公共结点。 参考资料:剑指offer第37题。题目分析: 代码实现: #include using namespace std;typedef struct ListNode{ struct ListNode *next; int d... 阅读全文

posted @ 2014-11-17 11:04 tractorman 阅读(171) 评论(0) 推荐(0) 编辑

找出数组中两个只出现一次的数字 【微软面试100题 第六十一题】
摘要:题目要求: 一个整型数组里除了两个数字机之外,其他的数字都出现了两次。 请写程序找出这两个只出现一次的数字。要求时间复杂度O(N).空间复杂度O(1). 参考资料:剑指offer第40题。题目分析: 已知: 1.两个相同的数字异或的结果为0,即a^a = 0. 2.两个不相同的数... 阅读全文

posted @ 2014-11-17 10:19 tractorman 阅读(215) 评论(0) 推荐(0) 编辑

在O(1)时间内删除链表结点 【微软面试100题 第六十题】
摘要:题目要求: 给定链表的头指针和一个结点指针,在O(1)时间删除该结点。 参考资料:剑指offer第13题。题目分析: 有几种情况: 1.删除的结点是头结点,且链表不止一个结点; 2.删除的结点是头结点,且链表只有一个结点; 3.删除的结点是尾结点,且链表不止一个结点; ... 阅读全文

posted @ 2014-11-16 11:49 tractorman 阅读(328) 评论(0) 推荐(0) 编辑

不能被继承的类 【微软面试100题 第五十九题】
摘要:题目要求: 用C++设计一个不能被继承的类。 参考资料:剑指offer第48题。题目分析: 方法1:把构造函数设为私有函数,定义共有的静态函数来创建和释放类的实例; 方法2:利用虚拟继承和友元;代码实现: //把构造函数设为私有函数,定义共有的静态函数来创建和释放类的实例class Tem... 阅读全文

posted @ 2014-11-16 11:11 tractorman 阅读(135) 评论(0) 推荐(0) 编辑

从尾到头输出链表 【微软面试100题 第五十八题】
摘要:题目要求: 输入一个链表的头结点,从尾到头反过来输出每个结点的值。 参考资料:剑指offer第5题。题目分析: 可以用栈或者递归。 栈把链表结点从头到尾依次存储,这样最终栈顶就是链表尾部。 递归,对于当前结点,可以用递归输出当前结点之后的结点,再输出当前结点。代码实现: #include... 阅读全文

posted @ 2014-11-16 10:55 tractorman 阅读(153) 评论(0) 推荐(0) 编辑

调整数组顺序使奇数位于偶数前面 【微软面试100题 第五十四题】
摘要:题目要求: 输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 要求时间复杂度为O(n). 参考资料:剑指offer第14题。题目分析: 使用两个指针,pBegin和pEnd,pBegin从开头往后遍历,pEnd从结尾往前遍历,当pBegin... 阅读全文

posted @ 2014-11-11 18:19 tractorman 阅读(177) 评论(0) 推荐(0) 编辑

二元树的深度 【微软面试100题 第五十二题】
摘要:题目要求: 输入一颗二叉树的根结点,求该树的深度。 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 如 3 / \ 4 \ 2,深度为3 参考链接:剑指offer第39题。题目分析: 用递归的方式从根结点开始,遍历其... 阅读全文

posted @ 2014-11-11 14:07 tractorman 阅读(183) 评论(0) 推荐(0) 编辑

和为n连续正数序列 【微软面试100题 第五十一题】
摘要:题目要求: 输入一个正数n,输出所有和为n连续正数序列(至少两个)。 例如输入15,由于1+2+3+4+5 = 4+5+6 = 7+8 = 15.所以输出3个连续序列1~5,4~6,7~8. 参考资料:剑指offer第41题。题目分析: 由题意可知:从1~n中找连续的整数序列。 可以用两个... 阅读全文

posted @ 2014-11-08 22:37 tractorman 阅读(295) 评论(0) 推荐(0) 编辑

一道看上去很吓人的算法题 【微软面试去100题 第四十九题】
摘要:题目要求: 如何对n个数进行排序,要求时间复杂度O(N).空间复杂度为O(1).题目分析: 严格的说,这道题给出的条件不全。如果这n个数字的大小跨度很大(1~无穷大),则肯定达不到要求。 如果n个数字的大小在一定范围内(如0~65535),则可以用hash表的方法。定义为int hash[65... 阅读全文

posted @ 2014-11-08 22:20 tractorman 阅读(225) 评论(0) 推荐(0) 编辑

在左移的递减数组中查找某数 【微软面试100题 第四十八题】
摘要:题目要求: 一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1,}左移两位形成的,在这种数组中查找某个数。题目分析: 方法1 逐个查找,遍历一遍数组,时间复杂度O(N). 方法2 二分查找,时间复杂度O(logN).具体分析见下图:代码实现:#... 阅读全文

posted @ 2014-11-08 21:45 tractorman 阅读(248) 评论(0) 推荐(0) 编辑

最长递减子序列 【微软面试100题 第四十七题】
摘要:题目要求: 求一个数组的最长递减子序列; 比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}。代码实现:代码1:动态规划,时间复杂度O(N^2).#include using namespace std;const int N = 8;int Lis(int a[],... 阅读全文

posted @ 2014-11-07 19:05 tractorman 阅读(228) 评论(0) 推荐(0) 编辑

矩阵运算 【微软面试100题 第四十五题】
摘要:题目要求: 对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一,现给出以正数矩阵,判断其是否能够由一个全零矩阵经过上述运算得到。题目分析: 使用贪心算法。代码实现: #include using namespace std;const int N =... 阅读全文

posted @ 2014-11-07 15:33 tractorman 阅读(428) 评论(0) 推荐(0) 编辑

设计一个魔方(六面)的程序 【微软面试100题 第四十四题】
摘要:题目要求: 设计一个魔方(六面)的程序。题目分析: 把魔方从正面看展开成一个平面,如图1所示。设计一个类,其中Spacexy[SPACE][LEN][LEN];中的SPACE为0~5表示六个面,每个数字代表哪一面见图1.LEN为0~2,[LEN][LEN]表示某个面的3*3的9个格子。 类中的... 阅读全文

posted @ 2014-11-07 15:21 tractorman 阅读(2389) 评论(0) 推荐(0) 编辑

二叉搜索树的非递归前中后序遍历 【微软面试100题 第四十三题】
摘要:题目要求: 实现二叉搜索树的前序、中序、后序非递归遍历。题目分析: 非递归前序遍历:使用一个辅助栈,出栈一个结点并输出该结点,同时依次入栈该结点的右结点和左结点,再出栈,入栈...; 非递归中序遍历:使用一个辅助栈和一个临时结点,临时结点不断找树的左子树,知道为空,然后又跳到空结点父结点的右子... 阅读全文

posted @ 2014-11-06 21:44 tractorman 阅读(244) 评论(0) 推荐(0) 编辑

合并链表 【微软面试100题 第四十二题】
摘要:题目要求: 两个非降序链表的并集,1->2->3和2->3->5合并为1->2->3->5. 另外只能输出结果,不能修改两个链表的数据。题目分析: 1.不能修改原链表数据:即,输出1->2->3->5后,原来的两个链表还是1->2->3和2->3->5。因此输出的这些结点都需要重新申请空间存放... 阅读全文

posted @ 2014-11-06 18:55 tractorman 阅读(182) 评论(0) 推荐(0) 编辑

珠子问题 【微软面试100题 第四十题】
摘要:题目要求: 一串首尾相连的珠子(m个),有N种颜色(N=nLen) Break;} 阅读全文

posted @ 2014-11-06 18:09 tractorman 阅读(286) 评论(0) 推荐(0) 编辑

第三十八题汇总 【微软面试100题 第三十八题】
摘要:第一题: 用天平(只能比较,不能称重)从一堆小球中找出其中唯一一个较轻的,用x次天平,最多可以从y个小球中找出较轻的那个,求y与x的关系式。分析: y = 3^x. 例如:Y= 9. 先分成3堆abc,每堆3个小球; 第一次称找出在abc中哪一堆:称a和b,如果天平不倾斜,... 阅读全文

posted @ 2014-11-06 12:57 tractorman 阅读(412) 评论(0) 推荐(0) 编辑

字符串联接 【微软面试100题 第三十七题】
摘要:题目要求: 有n个长为m+1的字符串,如果某个字符串的最后m个字符与某个字符串的前m个字符匹配,则两个字符串可以联接。 问这n个字符串最多可以连成一个多长的字符串,如果出现死循环,则返回错误。题目分析: 1.每个字符串都是长为m+1的字符串,两个字符串匹配后长度应该为1+m+1=m+2; 2... 阅读全文

posted @ 2014-10-31 17:15 tractorman 阅读(483) 评论(1) 推荐(0) 编辑

求比赛名次 【微软面试100题 第三十六题】
摘要:题目要求: n支队伍比赛,分别编号为0,1,2,...,n-1,已知它们之间的实力对比关系存储在一个二维数组w[n][n]中,w[i][j]的值代表编号为i,j的队伍中更强的一支,所以w[i][j] = i或者j. 现在给出它们的出场顺序,并存储在数组order[n]中,比如order[n] =... 阅读全文

posted @ 2014-10-31 16:25 tractorman 阅读(317) 评论(2) 推荐(2) 编辑

上一页 1 2 3 4 下一页

导航

统计

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