2012-10月微软面试题
2012-10-23 11:00
10 查看
一面:
1、有两个有序链表(数值有序)。一个链表是递增的,一个链表是递减的。现在将两个链表合并成一个链表,并保证最后的链表是递增的。
2、有一颗二叉树,结点的结构体如下:
strcut node
{
int value;
node * left;//左孩子
node * right;//右孩子
node * other;//同一层右侧的结点。
}node *;
如何用新的结构体表示的结点表示出二叉树的结构。即同一层的结点,如何从左到右链接起来。
如果允许用多余的空间,怎么做?不能用多余的空间又怎么做?(这道也是优酷的面试题)
二面:
1、检索二叉树(有序二叉树,左孩子的值都比根的值小,右孩子的值都比根的值大),找一个x,判断二叉树上是否有该结点。如果有,则删除。(写代码)
三面:
1、(智力题)一个监狱里,有100名犯人,1名监狱长。监狱长有一个房间,房间里有一盏灯。监狱长每天可随机从100名犯人之间抽一个犯人(可重复)去这个房间,犯人可开灯、关灯,也可以什么都不做。犯人之间不能通信。问题:在监狱长选第一个人进房间之前,100个人需要商量一个对策,保证:在监狱长选犯人的过程中,其中一个人进房间后看了一下,跟监狱长说,这100个犯人都至少进来过一次了。(监狱长选犯人的次数是无限的)
2、现在有一个数组,数组中的数都是自然数(0,1,2,3...),现在这个数组是有序的,要找到第一个不存在的数,如,(1234),则第一个不存在的是0.如:(0134),第一个不存在的是2.现在要找到第一个不存在的数,时间复杂度小于O(n).
如果这个数组是无序的,时间复杂度小于等于O(n),该怎么做?
1、有两个有序链表(数值有序)。一个链表是递增的,一个链表是递减的。现在将两个链表合并成一个链表,并保证最后的链表是递增的。
2、有一颗二叉树,结点的结构体如下:
strcut node
{
int value;
node * left;//左孩子
node * right;//右孩子
node * other;//同一层右侧的结点。
}node *;
如何用新的结构体表示的结点表示出二叉树的结构。即同一层的结点,如何从左到右链接起来。
如果允许用多余的空间,怎么做?不能用多余的空间又怎么做?(这道也是优酷的面试题)
二面:
1、检索二叉树(有序二叉树,左孩子的值都比根的值小,右孩子的值都比根的值大),找一个x,判断二叉树上是否有该结点。如果有,则删除。(写代码)
三面:
1、(智力题)一个监狱里,有100名犯人,1名监狱长。监狱长有一个房间,房间里有一盏灯。监狱长每天可随机从100名犯人之间抽一个犯人(可重复)去这个房间,犯人可开灯、关灯,也可以什么都不做。犯人之间不能通信。问题:在监狱长选第一个人进房间之前,100个人需要商量一个对策,保证:在监狱长选犯人的过程中,其中一个人进房间后看了一下,跟监狱长说,这100个犯人都至少进来过一次了。(监狱长选犯人的次数是无限的)
2、现在有一个数组,数组中的数都是自然数(0,1,2,3...),现在这个数组是有序的,要找到第一个不存在的数,如,(1234),则第一个不存在的是0.如:(0134),第一个不存在的是2.现在要找到第一个不存在的数,时间复杂度小于O(n).
如果这个数组是无序的,时间复杂度小于等于O(n),该怎么做?
相关文章推荐
- 【分享】微软面试题及答案 (很需要开放性思维啊)
- 变态而有趣的微软面试题及答案
- 字符串转换成整数-微软面试题
- 关于一道微软面试题的思考
- 微软面试题之数字谜题
- 25. 微软面试题:栈的push、pop序列(栈)
- 微软面试题
- 全新整理:微软、Google等公司的面试题及解答、第161-170题
- 微软面试-微软面试题(2)
- 微软面试题2 .
- 微软、Google等面试题、算法
- 链表环与两链表求交问题(2012年微软、新浪面试题)
- 【微软100题】2010年中兴面试题 编程求解: 输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数, 使其和等于 m
- 微软面试题:求整数随机数构成的数组中找到长度大于=3的最长的等差数列
- 全新整理:微软、Google等公司的面试题及解答、第161-170题
- [VC] 一个微软面试题--关于位结构体
- 微软面试题---阶乘问题
- 如果在高速公路上30分钟内到一辆车开过的几率是0.95,那么在10分钟内看到一辆车开过的几率是多少 (假设为常概率条件下) - Google, 谷歌,百度,baidu,阿里巴巴,alibaba,微软,华为,huawei面试题,
- 微软,Google面试题 (2) —— 设计带有min函数的栈
- 电梯调度算法(微软面试题)