昨天听同学说有小米的笔试,几经辗转才过去,但是已经迟到将近半个小时了,本来就一个半小时的时间,搞得挺紧张的。
题目不是很难,两道算法题
1 一个有序数组经过循环移位,但是不知道移了多少位,要求查找n,并给出时间、空间复杂度
思路:先通过二分查找求出移了多少位,也就是最大值和最小值相接的地方
然后,通过比较,就知道n在前一部分查找,还是后一部分,查找过程直接用二分法
时间复杂度是0(n),空间是O(1)
求移位的我是这么写的
int l=0, h=len-1;
while(l<=h)
{
mid = (l+h)/2;
if(l==h) break;
else if(a[l]<a[mid]) l = mid +1;
else h=mid-1;
}
最后l所指向的就是最大值,那么l+1就是最小值
2 剑指offer里的一道题
double Power( double base, int exponent);
#include "stdafx.h"
#include <math.h>
bool g_InvalidInput = false;
bool equal(double num1, double num2);
double PowerWithUnsignedExponent(double base, uns