1.网易2014校园招聘杭州Java笔试题
2.大众点评2016研发工程师笔试真题
给定一个整数sum,从有N个有序元素的数组中寻找元素a,b,使得a+b的结果最接近sum,最快的平均时间复杂度是( )
a. O(n)
b. O(nlogn)
c. O(n^2)
d. O(logn)
选a O(n)时间,2个指针从数组的开始位置和结束位置移动,和大于sum,left++,和小于sum,right–。更新最小的差值,和2个指针的值,移动时更新。差值为0,则结束
3.滴滴 2016 笔试题 (选择题) 博弈论问题
有3堆火柴,分别有4,5,7根,两个人依次取火柴,每次只能取同一堆的火柴,最少拿一根,最多拿着堆内所有火柴,取走最后一根火柴,让对方无火柴可以取者为胜。请问现在谁会获胜?()
A 后手
B 先手
C 不确定
4.华为面试题(8分钟写出代码)
题目:有两个数组a,b,大小都为n,数组元素的值任意,无序;
要求:通过交换a,b中的元素,使数组a元素的和与数组b元素的和之间的差最小。
我的方法有:
在a和b中寻找使得x在(0,A)之间并且最接近A/2的i和j,交换相应的i和j元素,重新计算A后,重复前面的步骤直至找不到(0,A)之间的x为止。
背包算法:在2n个数中,找出最接近sum/2的值的n个数,但当n很大时,效率很低
大家有没有什么更好的算法
5.阿里2015实习生招聘题
假定x=500,则下面函数的返回值为()
int fun(int x)
{
int countx = 0;
while (x)
{
countx++;
x = x & (x – 1);
}
return countx;
}
2
3
5
6