微软面试题2

1、给你一个凸多边形,你怎么用一条线,把它分成面积相等的两部分 2、有一条数轴,上有一整数点s,点s两侧分别放了两个机器人,不知道两个机器人分别距离s的距离,两机器人不能相互通信。 现在,给你以下指令: R(往右一格) L(往左一格) IF(S)是否在S点 GOTO A,跳到A代码段。 设计一套指令给两个机器人,让两个器机可以最终在某一点相遇。

3、怎么判断两棵二叉树是否是同构的

4、按层次打印一个二叉树

5、给你一个数n(最大为10000),怎么求其阶乘

6、判断两个单链表是否有交叉
对于仅判断相交不相交的话:判断最后一个节点是否相同的办法并不慢,如果两个链表长度m,n 那么复杂度O(m+n),这是最优的复杂度
拓展:如何寻找交叉节点:

  • 指针p、q分别遍历链表a、b,假设q先到达NULL(即 假设a 比 b 长),此时从a的头发出一个指针t,当p到达NULL时,从b的头发出s,当s==t的时候即交点.
个人资料
sam
等级:6
文章:18篇
访问:3.5w
排名: 20
上一篇: 微软面试题汇总
下一篇:史上最全Java面试266题:算法+缓存+TCP+JVM+搜索+分布式+数据库
猜你感兴趣的圈子:
微软笔试面试圈
标签: 机器人、头发、相交、交叉、指令、面试题
隐藏