![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试题
Red_Flame
热爱C/C算法Windwos编程.
展开
-
微软面试题<一>
题目:把二叉查找树变成排序后的双向链表. 10 / \ 6 14 / \ / \ 4 8 12 16得到 4=6=8=10=12=14=16思路: 由于对二叉查找树的中序遍历就会得到一个排序后的数组。所以可以在中序遍历时对每个遍原创 2013-04-13 21:33:38 · 667 阅读 · 0 评论 -
微软面试题<二>
题目: 设计一个包含min函数的栈,得到最小元素,其中要求push,pop,min时间复杂度均为O(1).思路: 采用空间换时间,引进一个辅助数组,存储当前所有元素中最小元素的下标,每次往栈中压入新的元素时更新此数组.代码如下:#include using namespace std;typedef int Elemtype;class MinStack{public原创 2013-04-14 18:09:24 · 679 阅读 · 0 评论 -
微软面试题<三>
题目:求子数组的最大和输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。思路:动态规划,当一段子数组和小于零时,原创 2013-04-14 22:12:25 · 624 阅读 · 0 评论 -
微软面试题<四>
题目:在二元树中找出和为某一值的所有路径题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如 输入整数22和如下二元树 10 / \ 5 12 / \ 4 7则路径分别为10 12与 10 5 7思路:DFS,分别对左右子树进原创 2013-04-14 23:44:39 · 743 阅读 · 0 评论 -
微软面试题<五>
题目:查找最小的k个元素题目:输入n个整数,输出其中最小的k个。例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。这里采用的是STL的最大堆来解决,先取k个元素建堆,然后取剩下的元素与堆中的最大值进行比较,若小于堆中的最大值,则该值进堆,进行若干次循环,即可得到结果.代码实现:#include #include #include原创 2013-04-18 19:50:42 · 907 阅读 · 0 评论 -
微软面试题<七>
题目:微软亚院之编程判断俩个链表是否相交:给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。为了简化问题,我们假设俩个链表均不带环。问题扩展:1.如果链表可能有环列?2.如果需要求出俩个链表相交的第一个节点列?先来解决两链表均不带环的情况:需要注意的是链表相交不是指链表含有相同的元素,而是地址相同.通过此图可以发现相交的两个链原创 2013-04-19 00:53:16 · 662 阅读 · 0 评论 -
微软面试题<十>
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回 true ,否则返回 false 。分析: 由二叉查找树的性质分析可知,最后访问的是节点的根结点,其根结点大于其左子树的全部结点,小于其右子树的全部结点, 所以在遍历过程中,如果发现某个元素大于根结点,则该元素左部分的数据应全小于它,右部分数据全大于它,在依次对子序列进行递归分析,如果在某段序列中原创 2013-04-20 21:12:33 · 604 阅读 · 0 评论