# 分享几条来自微软（Microsoft）的算法设计笔试试题

By [limccn](https://paragraph.com/@limccn) · 2022-06-21

---

今天晚间上网转了转，看到了，几条来自微软（Microsoft）的几条笔试试题，主要是针对微软学生中心的实习机会的，诸位如果想到微软实习的话，可以考虑自己做做看，感觉上对初学者比较困难，本人目前是没时间写代码了，最近忙者考试，诸位如果有想法的话，直接留言，或者可以跟我联系吧，

第一题 一个整数数列，元素取值可能是0~65535中的任意一个数，相同数值不会重复出现 。0是例外，可以反复出现。 请设计一个算法，当你从该数列中随意选取5个数值，判断这5个数值是否连续相 邻。

注意： - 5个数值允许是乱序的。比如： 8 7 5 0 6 - 0可以通配任意数值。比如：8 7 5 0 6 中的0可以通配成9或者4 - 0可以多次出现。 - 复杂度如果是O(n2)则不得分。

试题2 设计一个算法，找出二叉树上任意两个结点的最近共同父结点。 复杂度如果是O(n2)则不得分。

试题3 一棵排序二叉树，令 f=(最大值+最小值)/2，设计一个算法，找出距离f值最近、

大于f值的结点。 复杂度如果是O(n2)则不得分。

试题4 一个整数数列，元素取值可能是1~N（N是一个较大的正整数）中的任意一个数，

相同数值不会重复出现。设计一个算法，找出数列中符合条件的数对的个数，满

足数对中两数的和等于N+1。 复杂度最好是O(n)，如果是O(n2)则不得分。

* * *

title: "分享几条来自微软（Microsoft）的算法设计笔试试题" date: "2008-12-19" categories:

*   "algorithms"
    

* * *

---

*Originally published on [limccn](https://paragraph.com/@limccn/microsoft)*
