参加武汉腾讯笔试,吓尿了,人真心好多,身边的竞争对手差不多都是武大,武理工,中南、中科等等硕士,哎,又感叹一句如果我简历上的
学历不是因为一不小心写成硕士,腾讯还会给我机会么。。。试题的好多题目很杂,有近一半数据结构、语言、算法题目,其他的都是各科的
基础题,因为也是acm渣的出身,多少还是会一些。。。大公司笔试应该来说特别重视基础和算法类的题目。
有道这样的题目升序的数组 a[n],向左移动K位,比如说数组2、3、4、5、6、7向左移动2位得到4、5、6、7、2、3实现二分查找 x 填空
if(()or()) 查找右区间
else查找左区间
int mid = l + r >> 1;
if(()or()) query(a,mid,r,x)
else query(a,l,mid,x)
要求填写if( )or( )
解析:主要分三种情况:
第一种
建立模型 4、5、6、7、2、3
l r
第二种
建立模型 4、5、6、7、2、3
l r
第三种
建立模型 4、5、6、7、2、3
l r
很显然第一、二中可以写在一个()中:if((r<(n-k+1)||l>(n-k))&& x>a[mid])
第三种需要分析a[l]与x的大小了,并且还有分析mid于(n-k)的大小,如果a[l]>x则符合要求:if( l<(n-k+1) && r>(n-k) && (n-k+1)>mid && a[l]>x )
所以答案应该是:if(((r<(n-k+1)||l>(n-k))&& x>a[mid]) or (l<(n-k+1) && r>(n-k) && (n-k+1)>mid && a[l]>x)
武汉笔试之旅
最新推荐文章于 2022-10-28 17:23:07 发布