100-98

98.第2组微软面试题
1.给出一个函数来输出一个字符串的所有排列。
2.请编写实现malloc()内存分配函数功能一样的代码。
3.给出一个函数来复制两个字符串A和B。字符串A的后几个字节和字符串B的前几个字节重叠。 
4.怎样编写一个程序,把一个有序整数数组放到二叉树中? 
5.怎样从顶部开始逐层打印二叉树结点数据?请编程。 
6.怎样把一个链表掉个顺序(也就是反序,注意链表的边界条件并考虑空链表)?


思路:

1.一般是采用递归的思路,之前的题目中也已经涉及到了。。。

2.这个不太清楚,需要具体研究下。在网上找了些资料,但是看的不是特别清楚。。。

3.这其实跟上面的第二个问题一样也属于简单库函数的问题。在前面的日志中,也涉及到了相关的问题,比较简单。主要需要注意的一点是,要考虑到两个字符串有相交的情况。所以在编码实现的时候,需要注意考虑覆盖的情况。

4.这个题目,前面的日志中也已经涉及到了。我当时想到的比较简单的做法是,因为之前已经多次实现了二叉查找树,采用的是递归的思路。然后只要将数组依次添加到树当中就可以了。但是还有个问题,就是因为数组本来就是有序的,如果按照有序的顺序直接添加到树中,这样得到的结果就会是二叉树中最坏的情况。就是只有一支的情况,因此还需要采用递归的方式,依次选择序列的中间项。。。

5.比较简单,多次实现的问题了。。。主要的思路是采用辅助队列。

6.题目中也提到要注意特例情况,如空链表和边界情况。采用的方式也是比较简单的。时间复杂度为O(n),空间复杂度为O(1)。

你可能感兴趣的:(100-98)