![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
微软面试一百题
zhoutong12589
这个作者很懒,什么都没留下…
展开
-
7.微软亚院之编程判断俩个链表是否相交(如果链表可能有环)
问题:微软亚院之编程判断俩个链表是否相交给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。为了简化问题,我们假设俩个链表均不带环。问题扩展:1.如果链表可能有环列?答案://20121125#include using namespace std;typedef struct node { int num; node原创 2012-11-25 17:26:07 · 441 阅读 · 0 评论 -
14.输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。
题目:题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。答案://20130112#include using namespace std;原创 2013-01-12 19:35:01 · 968 阅读 · 0 评论 -
17.在一个字符串中找到第一个只出现一次的字符
题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。答案://20130113#include #include using namespace std;typedef struct strore{ int times;//出现次数 int count;//出现排序}strore;int main(){ string s = "abac原创 2013-01-13 15:20:16 · 408 阅读 · 0 评论 -
20.输入一个表示整数的字符串,把该字符串转换成整数并输出。
题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串"345",则输出整数345。答案://20130128#include #include using namespace std;int convert(string const s);int main(){ string s = "34589690"; cout << convert(原创 2013-01-28 13:59:24 · 1205 阅读 · 0 评论 -
18.n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始, 每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。
题目:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。答案://20130128#include using namespace std;int lastRemain(i原创 2013-01-28 13:06:46 · 1089 阅读 · 0 评论 -
24.链表的逆置与合并
题目:1、对一个链表进行就地逆置2、对两个有序链表进行合并,合并为一个有序链表答案://20130130#include using namespace std;typedef struct node { int num; node* next;}node,*pnode;pnode makeList(const int s[],int n);void print原创 2013-01-30 16:25:33 · 617 阅读 · 0 评论 -
25.写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
题目:写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,outputstr所原创 2013-02-08 17:18:12 · 1322 阅读 · 0 评论 -
26.左旋转字符串
题目:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数。要求时间对长度为n的字符串操作的复杂度为O(n),辅助内存为O(1)。答案://20130208#include #include using namespace std;void reverseStr(stri原创 2013-02-08 17:25:33 · 352 阅读 · 0 评论 -
27.跳台阶问题
题目:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳法,并分析算法的时间复杂度。答案://20130215#include using namespace std;int fibo(int n);int main(int argc, char* argv[]){ int n = 8; cout<<fibo(n);原创 2013-02-15 13:29:57 · 329 阅读 · 0 评论 -
28.整数的二进制表示中1的个数
题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。答案://20130215#include using namespace std;int count1(int n);int main(int argc, char* argv[]){ int n = 64; cout<<count1(n);原创 2013-02-15 13:38:38 · 357 阅读 · 0 评论 -
30.在从1到n的正数中1出现的次数
题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次。分析:这是一道广为流传的google面试题。答案:参考文章:http://blog.csdn.net/fanzitao/article/details/7908247//20130305#include using原创 2013-03-05 16:29:19 · 621 阅读 · 0 评论 -
29.栈的push、pop序列
题目:输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。为了简单起见,我们假设push序列的任意两个整数都是不相等的。 比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列。因为可以有如下的push和pop序列:push 1,push 2,push 3,push 4,pop,push 5原创 2013-02-23 17:08:05 · 473 阅读 · 0 评论 -
33.实现一个挺高级的字符匹配算法
问题:实现一个挺高级的字符匹配算法:给一串很长字符串,要求找到符合要求的字符串,例如目的串:1231******3***2 ,12*****3这些都要找出来其实就是类似一些和谐系统。。。。。答案://20130323#include #include #include using namespace std;bool isfit(string cons原创 2013-03-23 14:13:16 · 629 阅读 · 0 评论 -
15.输入一颗二元查找树,将该树转换为它的镜像
题目:题目:输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。 例如输入: 8 / / 6 10 // //5 7 9 11输出: 8 / / 10 6 // //11 9 7 5答案://20130113#inclu原创 2013-01-13 14:37:26 · 403 阅读 · 0 评论 -
21.输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来.
题目:2010年中兴面试题编程求解:输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来. 答案://20130128#include using namespace std;int main(){ int n = 100; int m = 110; int first原创 2013-01-28 15:13:52 · 558 阅读 · 0 评论 -
7.微软亚院之编程判断俩个链表是否相交(如果需要求出俩个链表相交的第一个节点)
问题:微软亚院之编程判断俩个链表是否相交给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。为了简化问题,我们假设俩个链表均不带环。问题扩展:2.如果需要求出俩个链表相交的第一个节点列?答案:参考文章:http://blog.csdn.net/lihappy999/article/details/7330175//20121127#原创 2012-11-27 20:09:46 · 931 阅读 · 0 评论 -
2.设计包含min函数的栈
声明:此题目来自 v_JULY_v的blog,出处http://blog.csdn.net/v_july_v/article/details/6004660代码经过本人调试,不敢保证是最优的,但应该是正确的,如果错误,希望指正,改进也可以。谢谢!!!问题:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。原创 2012-11-21 11:16:32 · 431 阅读 · 0 评论 -
1.把二元查找树转变成排序的双向链表
声明:此题目来自 v_JULY_v的blog,出处http://blog.csdn.net/v_july_v/article/details/6004660代码经过本人调试,不敢保证是最优的,但应该是正确的,如果错误,希望指正,改进也可以。谢谢!!!题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 10 /原创 2012-11-20 21:18:38 · 470 阅读 · 0 评论 -
3.求子数组的最大和
题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。答案://20121122#include usi原创 2012-11-22 09:56:34 · 504 阅读 · 0 评论 -
4.在二元树中找出和为某一值的所有路径
题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如 输入整数22和如下二元树 10 / / 5 12 / / 4 7则打印出两条路径:10, 12和10, 5, 7。二元树节点的数据结构定义为:struct BinaryTreeNode原创 2012-11-24 01:35:45 · 392 阅读 · 0 评论 -
5.查找最小的k 个元素
题目:输入n 个整数,输出其中最小的k 个。例如输入1,2,3,4,5,6,7 和8 这8 个数字,则最小的4 个数字为1,2,3 和4。答案://20121124#include #include #include #include using namespace std;int main(){ int k; cout<<"Type in the K yo原创 2012-11-24 10:39:47 · 523 阅读 · 0 评论 -
7.微软亚院之编程判断俩个链表是否相交(为了简化问题,我们假设俩个链表均不带环)
问题:微软亚院之编程判断俩个链表是否相交给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。为了简化问题,我们假设俩个链表均不带环。答案://20121125#include using namespace std;typedef struct node { int num; node* next;}node;void genera原创 2012-11-25 15:23:49 · 542 阅读 · 0 评论 -
9.判断整数序列是不是二元查找树的后序遍历结果
题目:判断整数序列是不是二元查找树的后序遍历结果题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / / 6 10 / / / / 5 7 9 11因此返回true。如果输入7、4、6、5,没有哪棵树原创 2012-12-12 19:10:26 · 345 阅读 · 0 评论 -
10.翻转句子中单词的顺序。
问题:翻转句子中单词的顺序。题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student. a am I”。答案://20121212#include #include #include using namespace s原创 2012-12-12 19:58:55 · 459 阅读 · 0 评论 -
11.求二叉树中节点的最大距离
题目:求二叉树中节点的最大距离...如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序,求一棵二叉树中相距最远的两个节点之间的距离。答案://20130109#include #include #include using namespace std;typedef struct TNode原创 2013-01-09 13:32:49 · 278 阅读 · 0 评论 -
13.输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针
问题:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针答案://20130112#include using namespace std;typedef struct node { int n; node* next;}node,*pnode;int main(){ int a[14]={6,7,8,9,2,3,5,6,7,8,原创 2013-01-12 15:22:55 · 623 阅读 · 0 评论 -
19.定义Fibonacci数列,输入n,用最快的方法求该数列的第n项
题目:定义Fibonacci数列如下: / 0 n=0f(n)= 1 n=1 / f(n-1)+f(n-2) n=2输入n,用最快的方法求该数列的第n项。分析:在很多C语言教科书中讲到递归函数的时候,都会用Fibonacci作为例子。因此很多程序员对这道题的递归解法非常熟悉,但....呵呵,你知道的。。 答案://20130128#include原创 2013-01-28 13:34:19 · 1964 阅读 · 0 评论 -
36.n支队伍比赛,分别编号为0,1,2。。。。n-1,已知它们之间的实力对比关系
题目:谷歌笔试:n支队伍比赛,分别编号为0,1,2。。。。n-1,已知它们之间的实力对比关系,存储在一个二维数组w[n][n]中,w[i][j] 的值代表编号为i,j的队伍中更强的一支。所以w[i][j]=i 或者j,现在给出它们的出场顺序,并存储在数组order[n]中,比如order[n] = {4,3,5,8,1......},那么第一轮比赛就是 4对3, 5对8。...原创 2013-04-15 14:57:44 · 1162 阅读 · 0 评论