题目:一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0到n-1之内。在范围0到n-1的n个数字中有且只有一个数字不在该数组中,请找出这个数字。
int getMissingNumber(const int* numbers, int length)
{
if (numbers == nullptr || length <= 0)
return -1;
int left = 0;
int right = length - 1;
while (left <= right)
{
int middle = (left + right) >> 1;
if (numbers[middle] != middle)
{
if (middle == 0 || numbers[middle - 1] != middle)
return middle;
else
right = middle - 1;
}
left = middle + 1;
}
if (left == length)
return length;
return -1;
}