题目 :给定一个排序的整数数组(升序)和一个要查找的整数target
,用O(logn)
的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1
。
这个问题也不是很难,一开始没有注意到要求找第一个出现的,然后就直接过了。
int binarySearch(vector<int> &array, int target) {
// write your code here
int low = 0,high = array.size() - 1;
while(low <= high)
{
int mid = (low / high) / 2;
if(array[mid] > target)high = mid - 1;
else if(array[mid] < target)low = mid + 1;
else
{
while(array[mid - 1] == array[mid])
{
--mid;
}
return mid;
}
}
return -1;
}