资源描述:
《2013-小米校园招聘笔试题 》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、2013-小米校园招聘笔试题、填空题(5分每题,一共8题)1、两个人A(速度为a)、B(速度为b)在一直路上相向而行。在A、B距离为s的时候,A放出一个鸽子C(速度为c),C飞到B后,立即掉头飞向A,遇到A在掉头飞向B就这样在AB之间飞来飞去,直到A、B相遇,这期间鸽子共飞行路程为?答案是:s*c/(a+b)2、(he)的平方=she。h、e、s代表的数字?答案是:分别代表2、5、63、运算(93-8)的结果为:884、将一个无序整数数组构造成一个最大堆,最差时间复杂度为:5、int*p=n;那么*p的值是0A、p的值B、p的地址C、n的值D、6、一个完全二叉树有770个节点,的地址那么
2、其叶子的个$I/Z7、有一个二维数组a[l...100,1...65]有100行,65列,我们以行序为主序,如果该数组的基地址是10000,且每个元素占2个存储单元,请问a[56,22]的存储地址是:173248、以下代码输出结果是:[cpp]viewplaincopyprint?classB{public:BO{couts=〃B〃:}voidf(){cout}private:strings;};classD:publicB{public:D():B()couts二〃D〃:voidf()cout}private:strings;};intmain(void){B*b=newD();b->
3、f0:((D*)b)-〉f();deleteb;returnO;}classB{public:B(){couts=〃B〃:voidf()cout}private:strings;};classD:publicB{public:D():B(){couts=〃D〃;voidf(){cout}private:strings;};intmain(void){B*b=newD();b->f();((D*)b)-〉f();deleteb;returnO;输出结果是BconstructorDconstruetorBD二、编程题1、数组乘积(15分)输入:一个长度为n的整数数组input输出:一个长度为
4、n的整数数组result,满足result[i]=input数组中除了input[i]之外所有数的乘积(假设不会溢出)。比如输入:inputs{2,3,4,5},输出result={60,40,30,24}程序时间和空间复杂度越小越好。C/C++:int氺cal(int氺input,intn):Java:int[]cal(int[]input):[epp]viewplaincopyprint?int^cal(int^input,intn)inti:int^result=newint[n]:result[O]=l:for(i=l;iresult[i]=result[i-l]*input[i
5、_l];resuit[0]=input[n_l];for(i=n_2;i〉0;—i){result[i]*=result[0]:result[0]*=input[i]:returnresult:}int氺cal(int氺input,intn){inti;int水resu1t=newint[n];result[0]=l;for(i=l:iresuit[i]=resuit[i_l]*input[i-1];result[0]=input[n-1]:for(i=n-2;i〉0;—i)result[i]*=resuit[0]:result[0]*=input[i];}returnresu1t;}2
6、、异形数(25分)在一个长度为n的整形数组a里,除了三个数字只出现一次外,其他的数字都出现了2次。请写程序输出任意一个只出现一次的数字,程序时间和空间复杂度越小越好。例如:a:{l,3,7,9,5,9,4,3,6,1,7},输出4或5或6C/C++:voidfind(int氺a,intn);Java:voidfind(int[]a);[cpp]viewplaincopyprint?//Iowbit表示的是某个数从右往左扫描第一次出现1的位置intlowbit(intx)returnx〜(x-1);voidfind(int氺a,intn)inti,xors;xors=0:for(i=0:i
7、xors、a[i];//三个数两两的异或后lowbit有两个相同,一个不同,可以分为两组intfips=0;for(i=0;ifips^=lowbit(xorsa[i]);//表示的是:flips=lowbit(ab)^lowbit(ac)^lowbit(tTc)intb;//假设三个只出现一次的其中一个数为bb=0;for(i=0;i{if(lowbit(xorsz'a[i])==fips)=a[i];//成功找到三个数中一个数c