小米2014校园招聘笔试题2013.10.19杭州

2个小时,三个Coding题目:

1、 实现Node* Connect(Node* root)函数,将二叉树结点的 sibling指针链接到同层右边的结点,如下图红色部分:
   struct Node{
       Node* left;
       Node* right;
       Node* sibling;
       int data;
   };
         1 --NULL
        /  \
       2 ---3 --NULL
      / \  /
     4 --5 --6 --NULL
    
2、打印一个N*N的 蛇形矩阵,如N=4时:
    1  2  6  7
    3  5  8  13
    4  9  12 14
    10 11 15 16

   分别给出空间复杂度为O(N*N)和0(1)的coding实现

3、 合并N个有序链表

其他城市笔试题

1、奇偶排序 

在一个N个整数数组里面,有多个奇数和偶数,设计一个排序算法,令所有的奇数都在偶数的左边

2、叉数降维

设计一个算法,把一个排序二叉树,转化成一个排序的双向链表,要求不能创建任何新的节点,只调整指针指向

3 、四则运算

现有一四则运算表达式,仅包含+-*/()和0~9数字,请设计一个算法,计算该表达式的值,其中+-只能作为运算符出现,不作为正负号出现在表达式中

请完成calc的代码实现

已有字符串和数字的转换方法(Str2num,num2Str)可直接调用,无须实现

C++:

float str2num(char[] str){....}

char[] num2str(float num){}

float calc(char[] exp){

''''''''

}

例如输入“1+2*(3-4)”

输出-1

 

设计测试用例测试Calc函数



你可能感兴趣的:(小米,笔试,校招)