文档介绍:微软面试
题目:
输入一棵二元查找树,将该二元查找树转换成一种排序双向链表。
规定不能创立任何新结点,只调节指针指向。
10
/ \
6 14
/ \ / \
4 8 12 16
转换成双向链表
4=6=8=10=12=14=16。
一方面咱们定义二元查找树 节点数据构造如下:
struct BSTreeNode
{
int m_nValue;// value of node
BSTreeNode *m_pLeft;// left child of node
BSTreeNode *m_pRight;// right child of node
};
。
定义栈数据构造,规定添加一种min函数,可以得到栈最小元素。
规定函数min、push以及pop时间复杂度都是O(1)。
题目:
输入一种整形数组,数组里有正数也有负数。
数组中持续一种或各种整数构成一种子数组,每个子数组均有一种和。
求所有子数组和最大值。规定期间复杂度为O(n)。
例如输入数组为1,-2,3,10,-4,7,2,-5,和最大子数组为3,10,-4,7,2,
因而输出为该子数组和18。
题目:输入一种整数和一棵二元树。
从树根结点开始往下访问始终到叶结点所通过所有结点形成一条途径。
打印出和与输入整数相等所有途径。
例如 输入整数22和如下二元树
10
/ \
5 12
/ \
4 7
则打印出两条途径:10,12和10,5,7。
二元树节点数据构造定义为:
struct BinaryTreeNode // a node in the binary tree
{
int m_nValue;// value of node
BinaryTreeNode *m_pLeft;// left child of node
BinaryTreeNode *m_pRight;// right child of node
};
题目:输入n个整数,输出其中最小k个。
例如输入1,2,3,4,5,6,7和8这8个数字,则最小4个数字为1,2,3和4。
第6题
腾讯面试题:
给你10分钟时间,依照上排给出十个数,在其下排填出相应十个数
规定下排每个数都是先前上排那十个数在下排浮现次数。
上排十个数如下:
【0,1,2,3,4,5,6,7,8,9】
举一种例子,
数值: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在下排浮现了0次....
以此类推..
第7题
微软亚院之编程判断俩个链表与否相交
给出俩个单向链表头指针,例如h1,h2,判断这俩个链表与否相交。
为了简化问题,咱们假设俩个链表均不带环。
问题扩展:
?
?
第8题
此贴选某些 比较怪题,,由于其中题目自身与算法关系不大,仅考考思维。特此并作一题。
,一间房里有三盏灯,另一间房有控制着三盏灯三个开关,
这两个房间是 分割开,从一间里不能看到另一间状况。
当前规定受训者分别进这两房间一次,然后判断出这三盏灯分别是由哪个开关控制。
有什么办法呢?
,你要用一根金条作为报酬。金条被提成七小块,每天给出一块。
如果你只能将金条切割两次,你如何分给这些工人?
3. ★用一种算法来颠倒一种链接表顺序。当前在不用递归式状况下做一遍。
★用一种算法在一种循环链接表里插入一种节点,但不得穿越链接表。
★用一种算法整顿一种数组。你为什么选取这种办法?
★用一种算法使通用字符串相匹配。
★颠倒一种字符串。优化速度。优化空间。
★颠倒一种句子中词顺序,例如将“我叫克丽丝”转换为“克丽丝叫我”,
实现速度最快,移动至少。
★找到一种子字符串。优化速度。优化空间。
★比较两个字符串,用O(n)时间和恒量空间。
★假设你有一种用1001个整数构成数组,这些整数是任意排列,但是你懂得所有整数都在1到1000(涉及1000)之间。此外,除一种数字浮现两次外,其她所有数