小米公司正式成立于4月,是一家专注于智能产品自主研发的移动互联网公司。“为发烧而生”是小米的产品理念。小米公司首创了用互联网模式开发手机操作系统、发烧友参与开发改进的模式。
今年小米的笔试共三道大题,时间90分钟
第一道 输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于所有偶数的前面,例如输入的数组为{1,2,4,7,9,8,10,15,14,20},调整后的数组 {1,7,9,15,2,4,8,10,14,20}是一种满足条件的方案。函数的头部已经写好,无返回值,有两个参数,一个是数组指针,另一个是该数组的长度。
我的解答思路是使用两个伪指针,一个指向数组的头部,另一个指向数组的尾部,先从前向后扫描,找到第一个偶数,然后在从后向前扫描找到倒数第一个奇数,交换这两个元素,循环上述步骤直到两个指针相遇。
第二道 输入一个二叉排序树,将该二叉排序树转换为排序的双向链表。要求不能创建任何新的节点,只调整指针的指向。(程序员面试100题的第一道题,输入样例一样),函数头部已经写好,无返回值,参数为根节点的指针。
第三道 输入一个数学表达式,包含+、-、、/、()运算,设计一个算法计算该表达式的值,+、-不作为正负号出现,函数头部已经给出,返回表达式的值,参数为字符串指针,给出了两个函数,一个字符转换成整数的函数,另一个是整数转换成字符的函数,可以直接调用。输入样例 1+2(3-4)