
微软100题
chqmrmex
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
1.二元查找树转变成排序的双向链表
1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \ 4 8 12 16 转换成双向链表 4=6=8=10=12=14=16。 首先:1.二叉树的结构;2.二叉查找树的构建;3.中序遍历;4.转变为双向链表(双向链表的前后结点可以转载 2013-10-05 12:33:27 · 690 阅读 · 0 评论 -
2.设计包含min 函数的栈
设计包含min 函数的栈。 定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素。 要求函数min、push 以及pop 的时间复杂度都是O(1)。 即函数min中做push和pop操作时间复杂度都是O(1),定义一个同样大小的栈B用来存放min,原始栈为A。 2、6、4、1、5入栈、出栈对应的min 序号 push() push-min() pop()转载 2013-10-05 17:56:37 · 516 阅读 · 0 评论 -
4.在二元树中找出和为某一值的所有路径(树)
题目:输入一个整数和棵二元树。 从树的根结点开始往下访问一直到叶所经过有形成条路径。 打印出和与输入整数相等的所有路径。 例如输入整数22 和如下二元树 10 / \ 5 12 / \ 4 7 则打印出两条路径:10, 12 和10, 5, 7。转载 2013-10-06 19:30:22 · 498 阅读 · 0 评论 -
3.求子数组的最大和
3.求子数组的最大和 题目: 输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2, 因此输出为该子数组的和18。 //July 2010/10/18 还有全转载 2013-10-05 21:52:10 · 545 阅读 · 0 评论 -
5.查找最小的k个元素(数组)
查找最小的k个元素(数组) 题目:输入n个整数,输出其中最小的k个。 例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。 第一种方法先排序,可以用快排,然后输出前K个,o(n*logn); 第二种方法:回忆下快速排序,将待排序的数据分成两组,选取其中一个数X,左部分都比X小,右部分都比X大,如图。 则我们想要找最小的k个元素,这时转载 2013-10-06 21:51:36 · 760 阅读 · 0 评论 -
7.微软亚院之编程判断俩个链表是否相交
微软亚院之编程判断俩个链表是否相交 给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。 为了简化问题,我们假设俩个链表均不带环。 问题扩展: 1.如果链表可能有环列? 2.如果需要求出俩个链表相交的第一节点列? 在解此题前,先判断一个单链表是否有环及环的链接点。参考:http://blog.sina.com.cn/s/blog_725dd1010100tqwp.转载 2013-10-09 14:29:40 · 934 阅读 · 0 评论 -
判断整数序列是不二元查找树的后遍历结果
题目:输入一个整数组,判断该是不某二元查找树的后序遍历结果。 如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后遍历结果: 8 / \ 6 10 / \ / \ 5 7 9 11 因此返回转载 2013-10-18 19:50:57 · 590 阅读 · 0 评论